#define logd(x) printf(#x": %d\n", x)
#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);
c=!(x<y);
d=x<y;
i=a;
j=b;
for(i=a,j=b;e++<x*y;z[i][j]=e,f());
p();
}
I2RlZmluZSBsb2dkKHgpIHByaW50ZigjeCI6ICVkXG4iLCB4KQojZGVmaW5lIE4oeCkgISh4JTIpCmEsYixjLGQsZSxpLGoseCx5LCoqejsKcCgpe2ZvcihqPXk7ai0tOylmb3IoaT14O2ktLTtwcmludGYoIiUqZCVjIiwoaW50KWxvZzEwKHgqeSkrMSx6W3gtaS0xXVt5LWotMV0saT8zMjoxMCkpO30KZigpewogICAgaWYoYz4wJiYhZCYmeC1pLTE9PWopewogICAgICAgIGM9MDsKICAgICAgICBkPTE7CiAgICB9CiAgICBlbHNlIGlmKCFjJiZkPjAmJngtaS0xLSh4PHk/eCUyOnklMik9PXktai0xKXsKICAgICAgICBjPS0xOwogICAgICAgIGQ9MDsKICAgIH0KICAgIGVsc2UgaWYoYzwwJiYhZCYmaSsoeDx5PzA6Tih5KSk9PXktai0xKXsKICAgICAgICBjPTA7CiAgICAgICAgZD0tMTsKICAgIH0KICAgIGVsc2UgaWYoIWMmJmQ8MCYmaS0oeDx5P04oeCk6MCk9PWopewogICAgICAgIGM9MTsKICAgICAgICBkPTA7CiAgICB9CiAgICBpKz1jOwogICAgais9ZDsKfQptYWluKCl7CiAgICBzY2FuZigiJWQlZCIsJngsJnkpOwogICAgej1tYWxsb2MoeCo0KTsKICAgIGZvcihpPXg7aS0tO3pbaV09bWFsbG9jKHkqNCkpOwogICAgCiAgICBhPXgvMi0oeDx5PzA6Tih4KSk7CiAgICBiPXkvMi0oeDx5PzA6Tih5KSk7CiAgICBhPWE8Yj9hOmI7CiAgICBiPShhPGI/YTpiKS0oeDx5P04oeCk6MCk7CiAgICBjPSEoeDx5KTsKICAgIGQ9eDx5OwogICAgCiAgICBpPWE7CiAgICBqPWI7CiAgICAKICAgIGZvcihpPWEsaj1iO2UrKzx4Knk7eltpXVtqXT1lLGYoKSk7CiAgICAKICAgIHAoKTsKfQ==