/*#include<stdio.h>
int main()
{
int a,b;
int i,j,k=1,arr[101][101];
scanf("%d %d", &a,&b);
for(i=0; i<a; i++) {
if(i%2==0) {
for(j=0; j<b; j++) {
arr[i][j] = k++;
}
}
else {
for(j=b-1; j>=0; j--) {
arr[i][j] = k++;
}
}
}
for(i=a-1; i>=0; i--) {
for(j=0; j<b; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}*/
/*
#include<stdio.h>
int main()
{
int a,b,arr[101][101];
int i,j,k=1;
scanf("%d %d", &a,&b);
for(j=0; j<=b-1; j++)
{
if(j%2!=1)
{
for(i=a-1; i>=0; i--)
{
arr[i][j]=k++;
}
}
else
{
for(i=0; i<=a-1; i++)
{
arr[i][j]=k++;
}
}
}
for(i=0; i<=a-1; i++)
{
for(j=b-1; j>=0; j--)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
*//*
#include<stdio.h>
int main()
{
int a,b,arr[101][101];
int i,j,k=1;
scanf("%d %d",&a,&b);
for(j=0; j<=b-1; j++)
{
if(j%2!=0)
{
for(i=a-1; i>=0; i--)
{
arr[i][j]=k++;
}
}
else
{
for(i=0; i<=a-1; i++)
{
arr[i][j]=k++;
}
}
}
for(i=0; i<=a-1; i++)
{
for(j=b-1; j>=0; j--)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}*//*
#include<stdio.h>
int main()
{
int a,b,arr[101][101];
int i,j,k=1,sum=0;
scanf("%d",&a);
for(i=0; i<a; i++)
{
for(j=0; j<a; j++)
{
arr[i][j] = k++;
}
}
for(i=0; i<a; i++)
{
for(j=0; j<a; j++)
{
if(i==0 || j==0 || i==a-1 || j==a-1){
sum += arr[i][j];
}
}
}
printf("%d", sum);
return 0;
}
*/
/*
#include<stdio.h>
int main()
{
int a,arr[105][105];
int direct[4][2] = {
{0, 1},
{1, 0},
{0, -1},
{-1, 0}
};
int i,j,k=1,p=0;
int x=1, y=1, dx, dy;
dx = direct[0][0];
dy = direct[0][1];
scanf("%d", &a);
for(i=0; i<=a+1; i++) {
for(j=0; j<=a+1; j++) {
if(i==0 || j==0 ||i==a+1 || j==a+1) {
arr[i][j] = 9;
}
}
}
arr[x][y] = k++;
//(아래 반복문을 하나로 압축한 식<-어려우니까 패턴에 익숙해지자)
for(i=0; i<a*a-1; ) {
if(arr[x+dx][y+dy]==0) {
x += dx;
y += dy;
arr[x][y] = k++;
i++;
}
else {
p++;
p %= 4;
dx = direct[p][0];
dy = direct[p][1];
}
}
// 0 1 2 3 4 5 6 7 8 9 . .
// 7%4 => 3
// 0 1 2 3 0 1 2 3 0 1 2 3
// 단순화해서 반복하는 식(근데 이건 틀림)
// i=0;
// j=0;
// d=1;
// for(k=1;k<=a*a;k++)
// {
// arr[i][j]=k;
// if(d==1)
// {
// if(j==a)
// {
// d=2;
// }
// j++;
//
// }
// else if(d==2)
// {
// if(i==a&&j==a)
// {
// d=3;
// }
// i++;
//
// }
// else if(d==3)
// {
// if(j==0)
// {
// d=4;
// }
// j--;
//
// }
// else if(d==4)
// {
// if(i==1)
// {
// d=1;
// }
// i--;
//
// }
//
// }
for(i=1; i<=a; i++)
{
for(j=1; j<=a; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}
*/
#include<stdio.h>
int main()
{
int a,arr[105][105];
int direct[4][2] = {
{1, 0},
{0, 1},
{-1, 0},
{0, -1}
};
int i,j,k=1,p=0;
int x=1, y=1, dx, dy;
dx = direct[0][0];
dy = direct[0][1];
scanf("%d", &a);
for(i=0; i<=a+1; i++) {
for(j=0; j<=a+1; j++) {
if(i==0 || j==0 ||i==a+1 || j==a+1) {
arr[i][j] = 9;
}
}
}
arr[x][y] = k++;
for(i=0; i<a*a-1; ) {
if(arr[x+dx][y+dy]==0) {
x += dx;
y += dy;
arr[x][y] = k++;
i++;
}
else {
p++;
p %= 4;
dx = direct[p][0];
dy = direct[p][1];
}
}
for(i=1; i<=a; i++)
{
for(j=1; j<=a; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}



