#define logd(x) printf(#x": %d\n", x)
#define M(a,b) a<b?a:b
#define N(x) !(x%2)
a,b,c,d,e,i,j,x,y,**z;
p
(){for(j
=y
;j
--;)for(i
=x
;i
--;printf("%*d%c",(int)log10(x
*y
)+1,z
[x
-i
-1][y
-j
-1],i
?32:10));}f(){
if(c>0&&!d&&x-i-1==j){
c=0;
d=1;
}
else if(!c&&d>0&&x-i-1-(x<y?x%2:y%2)==y-j-1){
c=-1;
d=0;
}
else if(c<0&&!d&&i+(x<y?0:N(y))==y-j-1){
c=0;
d=-1;
}
else if(!c&&d<0&&i-(x<y?N(x):0)==j){
c=1;
d=0;
}
i+=c;
j+=d;
}
main(){
for(i
=x
;i
--;z
[i
]=malloc(y
*4));
//a=x/2-(x<y?0:N(x));
//b=y/2-(x<y?0:N(y));
//a=a<b?a:b;
//b=(a<b?a:b)-(x<y?N(x):0);
b=(a=M(x/2-(x<y?0:N(x)),y/2-(x<y?0:N(y))))-(x<y?N(x):0);
c=!(d=x<y);
for(i=a,j=b;e++<x*y;z[i][j]=e,f());
p();
}
I2RlZmluZSBsb2dkKHgpIHByaW50ZigjeCI6ICVkXG4iLCB4KQojZGVmaW5lIE0oYSxiKSBhPGI/YTpiCiNkZWZpbmUgTih4KSAhKHglMikKYSxiLGMsZCxlLGksaix4LHksKip6OwpwKCl7Zm9yKGo9eTtqLS07KWZvcihpPXg7aS0tO3ByaW50ZigiJSpkJWMiLChpbnQpbG9nMTAoeCp5KSsxLHpbeC1pLTFdW3ktai0xXSxpPzMyOjEwKSk7fQpmKCl7CiAgICBpZihjPjAmJiFkJiZ4LWktMT09ail7CiAgICAgICAgYz0wOwogICAgICAgIGQ9MTsKICAgIH0KICAgIGVsc2UgaWYoIWMmJmQ+MCYmeC1pLTEtKHg8eT94JTI6eSUyKT09eS1qLTEpewogICAgICAgIGM9LTE7CiAgICAgICAgZD0wOwogICAgfQogICAgZWxzZSBpZihjPDAmJiFkJiZpKyh4PHk/MDpOKHkpKT09eS1qLTEpewogICAgICAgIGM9MDsKICAgICAgICBkPS0xOwogICAgfQogICAgZWxzZSBpZighYyYmZDwwJiZpLSh4PHk/Tih4KTowKT09ail7CiAgICAgICAgYz0xOwogICAgICAgIGQ9MDsKICAgIH0KICAgIGkrPWM7CiAgICBqKz1kOwp9Cm1haW4oKXsKICAgIHNjYW5mKCIlZCVkIiwmeCwmeSk7CiAgICB6PW1hbGxvYyh4KjQpOwogICAgZm9yKGk9eDtpLS07eltpXT1tYWxsb2MoeSo0KSk7CiAgICAKICAgIC8vYT14LzItKHg8eT8wOk4oeCkpOwogICAgLy9iPXkvMi0oeDx5PzA6Tih5KSk7CiAgICAvL2E9YTxiP2E6YjsKICAgIC8vYj0oYTxiP2E6YiktKHg8eT9OKHgpOjApOwogICAgYj0oYT1NKHgvMi0oeDx5PzA6Tih4KSkseS8yLSh4PHk/MDpOKHkpKSkpLSh4PHk/Tih4KTowKTsKICAgIGM9IShkPXg8eSk7CiAgICAKICAgIGZvcihpPWEsaj1iO2UrKzx4Knk7eltpXVtqXT1lLGYoKSk7CiAgICAKICAgIHAoKTsKfQ==