#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-y%2==y-j-1){
c=-1;
d=0;
}
else if(c<0&&!d&&i+!(y%2)-(x<y?!(x%2):0)==y-j-1){
c=0;
d=-1;
}
else if(!c&&d<0&&i-(x<y?!(x%2):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();
}
I2RlZmluZSBsb2dkKHgpIHByaW50ZigjeCI6ICVkXG4iLCB4KQojZGVmaW5lIE4oeCkgISh4JTIpCmEsYixjLGQsZSxpLGoseCx5LCoqejsKcCgpe2ZvcihqPXk7ai0tOylmb3IoaT14O2ktLTtwcmludGYoIiUqZCVjIiwoaW50KWxvZzEwKHgqeSkrMSx6W3gtaS0xXVt5LWotMV0saT8zMjoxMCkpO30KZigpewogICAgaWYoYz4wJiYhZCYmeC1pLTE9PWopewogICAgICAgIGM9MDsKICAgICAgICBkPTE7CiAgICB9CiAgICBlbHNlIGlmKCFjJiZkPjAmJngtaS0xLXklMj09eS1qLTEpewogICAgICAgIGM9LTE7CiAgICAgICAgZD0wOwogICAgfQogICAgZWxzZSBpZihjPDAmJiFkJiZpKyEoeSUyKS0oeDx5PyEoeCUyKTowKT09eS1qLTEpewogICAgICAgIGM9MDsKICAgICAgICBkPS0xOwogICAgfQogICAgZWxzZSBpZighYyYmZDwwJiZpLSh4PHk/ISh4JTIpOjApPT1qKXsKICAgICAgICBjPTE7CiAgICAgICAgZD0wOwogICAgfQogICAgaSs9YzsKICAgIGorPWQ7Cn0KbWFpbigpewogICAgc2NhbmYoIiVkJWQiLCZ4LCZ5KTsKICAgIHo9bWFsbG9jKHgqNCk7CiAgICBmb3IoaT14O2ktLTt6W2ldPW1hbGxvYyh5KjQpKTsKICAgIAogICAgYT14LzItKHg8eT8wOk4oeCkpOwogICAgYj15LzItKHg8eT8wOk4oeSkpOwogICAgYT1hPGI/YTpiOwogICAgYj0oYTxiP2E6YiktKHg8eT9OKHgpOjApOwogICAgYz0hKHg8eSk7CiAgICBkPXg8eTsKICAgIAogICAgaT1hOwogICAgaj1iOwogICAgCiAgICBmb3IoaT1hLGo9YjtlKys8eCp5O3pbaV1bal09ZSxmKCkpOwogICAgCiAgICBwKCk7Cn0=