using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型二维数组
     */
    public List<List<int>> Matrix (int n) {
        //write code here
        if (n == 0)
            return null;
        if (n == 1)
            return new List<List<int>>() {
            new List<int>() {
                1
            }
        };
        List<List<int>> nArr = new List<List<int>>();
        for (int i = 0; i < n; i++) {
            List<int> lsN = new List<int>();
            nArr.Add(lsN);
            for (int j = 0; j < n; j++)
                lsN.Add(0);
        }
        int nI = 0, nJ = 0, nN = 1;
        while (nN <= n * n) {
            //j++
            while (nJ < n && nArr[nI][nJ] == 0) {
                nArr[nI][nJ] = nN;
                nN++;
                nJ++;
            }
            nJ--;
            nI++;
            //i++
            while (nI < n && nArr[nI][nJ] == 0) {
                nArr[nI][nJ] = nN;
                nN++;
                nI++;
            }
            nI--;
            nJ--;
            //j--
            while (nJ >= 0 && nArr[nI][nJ] == 0) {
                nArr[nI][nJ] = nN;
                nN++;
                nJ--;
            }
            nJ++;
            nI--;
            //i--
            while (nI >= 0 && nArr[nI][nJ] == 0) {
                nArr[nI][nJ] = nN;
                nN++;
                nI--;
            }
            nI++;
            nJ++;
        }
        return nArr;
    }
}