using namespace std;
int main(void)
{
int N, j, k;
bool flag = true;
cin >> N;
int a[N][N];
for (j = 0; j < N; j++)
{
for (k = 0; k < N; k++)
{
a[j][k] = 0;
}
}
a[0][(N - 1) / 2] = 1;
for (int i = 2; i <= N * N; i++)
{
for (j = 0; j < N; j++)
{
for (k = 0; k < N; k++)
{
if (a[j][k] == i - 1 )
{
break;
}
}
if (a[j][k] == i - 1 && k < N)
{
break;
}
}
if(j == 0 && k != (N - 1) )
{
a[N - 1][k + 1] = i;
flag = false;
}
if(k == N - 1 && j != 0 && flag)
{
a[j - 1][0] = i;
flag = false;
}
if(j == 0 && k == (N - 1) && flag)
{
a[j + 1][k] = i;
flag = false;
}
if(j != 0 && k != (N - 1) && a[j - 1][k + 1] == 0 && flag)
{
a[j - 1][k + 1] = i;
flag = false;
}
else if (flag && a[j - 1][k + 1] != 0)
{
a[j + 1][k] = i;
flag = false;
}
flag = true;
}
for (j = 0; j < N; j++)
{
for (k = 0; k < N; k++)
{
cout << a[j][k] << " ";
}
cout << endl;
}
return 0;
}
// * 定义数组a[N][N] ={0} 若输入n = 3 会发现a[0][2]并没有初始化,为什么呢。。