#include <stdio.h>
int f(int n,int a[][n],int*b){int d=0,j=0,k=0,s=0,m=n-1,f=0;for(int i=0;i<n*n;i++,s++){if(s==m){d++,d%=4,s=0,f++;if(f%3==0)m--,f=1;}b[i]=!d?a[j][k++]:d==1?a[j++][k]:d==2?a[j][k--]:a[j--][k];}}
int main(void) {
#define N 5
/* The input array. */
#if N == 0
int a[1][1];
#elif N == 1
int a[N][N] = {{1}};
#elif N == 2
int a[N][N] = {{1, 2}, {4, 3}};
#elif N == 3
int a[N][N] = {{1, 2, 3}, {8, 9, 4}, {7, 6, 5}};
#elif N == 4
int a[N][N] = {{ 1, 2, 3, 4}, {12, 13, 14, 5}, {11, 16, 15, 6}, {10, 9, 8, 7}};
#elif N == 5
int a[N][N] = {{1, 2, 3, 4, 5}, {16, 17, 18, 19, 6}, {15, 24, 25, 20, 7}, {14, 23, 22, 21, 8}, {13, 12, 11, 10, 9}};
#endif
/* The output array. */
#if N != 0
int b[N*N];
#else
int b[1];
#endif
/* Process. */
f(N, a, b);
/* Print the result. */
#if N != 0
for (size_t i = 0; i < N*N; i++)
#endif
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgZihpbnQgbixpbnQgYVtdW25dLGludCpiKXtpbnQgZD0wLGo9MCxrPTAscz0wLG09bi0xLGY9MDtmb3IoaW50IGk9MDtpPG4qbjtpKysscysrKXtpZihzPT1tKXtkKyssZCU9NCxzPTAsZisrO2lmKGYlMz09MCltLS0sZj0xO31iW2ldPSFkP2Fbal1baysrXTpkPT0xP2FbaisrXVtrXTpkPT0yP2Fbal1bay0tXTphW2otLV1ba107fX0KCmludCBtYWluKHZvaWQpIHsKCSNkZWZpbmUgTiA1CgoJLyogVGhlIGlucHV0IGFycmF5LiAqLwoJI2lmIE4gPT0gMAoJCWludCBhWzFdWzFdOwoJI2VsaWYgTiA9PSAxCgkJaW50IGFbTl1bTl0gPSB7ezF9fTsKCSNlbGlmIE4gPT0gMgoJCWludCBhW05dW05dID0ge3sxLCAyfSwgezQsIDN9fTsKCSNlbGlmIE4gPT0gMwoJCWludCBhW05dW05dID0ge3sxLCAyLCAgM30sIHs4LCA5LCAgNH0sIHs3LCA2LCAgNX19OwoJI2VsaWYgTiA9PSA0CgkJaW50IGFbTl1bTl0gPSB7eyAxLCAgMiwgIDMsIDR9LCB7MTIsIDEzLCAxNCwgNX0sIHsxMSwgMTYsIDE1LCA2fSwgezEwLCAgOSwgIDgsIDd9fTsKCSNlbGlmIE4gPT0gNQoJCWludCBhW05dW05dID0ge3sxLCAgMiwgIDMsICA0LCA1fSwgezE2LCAxNywgMTgsIDE5LCA2fSwgezE1LCAyNCwgMjUsIDIwLCA3fSwgezE0LCAyMywgMjIsIDIxLCA4fSwgezEzLCAxMiwgMTEsIDEwLCA5fX07CgkjZW5kaWYKCgkvKiBUaGUgb3V0cHV0IGFycmF5LiAqLwoJI2lmIE4gIT0gMAoJCWludCBiW04qTl07CgkjZWxzZQoJCWludCBiWzFdOwoJI2VuZGlmCgoJLyogUHJvY2Vzcy4gKi8KCWYoTiwgYSwgYik7CgoJLyogUHJpbnQgdGhlIHJlc3VsdC4gKi8KCSNpZiBOICE9IDAKCQlmb3IgKHNpemVfdCBpID0gMDsgaSA8IE4qTjsgaSsrKQoJCQlwcmludGYoIiVkICIsIGJbaV0pOwoJI2VuZGlmCn0K