#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int* buildSnailReverse( int* a, int w, int h )
{
int
u[] = { 1, w,-1,-w},
d = w < h,
z = ((d? w: h) - 1 >> 1) * (w + 1) + (~w & d),
n = d? h - w: w - h,
p = 0,
c = n,
i = 0;
while(i < w * h)
{
a[z] = ++i;
z += u[d];
if (!c--)
{
++d &= 3, c = n ^= p ^= n ^= p;
p++;
}
}
return a;
}
void printArray(int* a, int w, int h)
{
for(int y = 0; y < h; y++)
{
for(int x = 0; x < w; x++)
printf("%3d", a[x + y * w]);
cout << endl;
}
}
int main()
{
int w, h;
cin >> w >> h;
int* a = new int[w * h];
buildSnailReverse(a, w, h);
printArray(a, w, h);
delete[] a;
fflush(stdin);
getchar();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCogYnVpbGRTbmFpbFJldmVyc2UoIGludCogYSwgaW50IHcsIGludCBoICkKewogICAgaW50CiAgICB1W10gPSB7IDEsIHcsLTEsLXd9LAogICAgZCA9IHcgPCBoLAogICAgeiA9ICgoZD8gdzogaCkgLSAxID4+IDEpICogKHcgKyAxKSArICh+dyAmIGQpLAogICAgbiA9IGQ/IGggLSB3OiB3IC0gaCwKICAgIHAgPSAwLAogICAgYyA9IG4sCiAgICBpID0gMDsKICAgIHdoaWxlKGkgPCB3ICogaCkKICAgIHsKICAgICAgICBhW3pdID0gKytpOwogICAgICAgIHogKz0gdVtkXTsKICAgICAgICBpZiAoIWMtLSkKICAgICAgICB7CiAgICAgICAgICAgICsrZCAmPSAzLCBjID0gbiBePSBwIF49IG4gXj0gcDsKICAgICAgICAgICAgcCsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhOwp9Cgp2b2lkIHByaW50QXJyYXkoaW50KiBhLCBpbnQgdywgaW50IGgpCnsKCWZvcihpbnQgeSA9IDA7IHkgPCBoOyB5KyspCgl7CgkJZm9yKGludCB4ID0gMDsgeCA8IHc7IHgrKykKCQkgICAgcHJpbnRmKCIlM2QiLCBhW3ggKyB5ICogd10pOwoJICAgIGNvdXQgPDwgZW5kbDsKCX0KfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdywgaDsKICAgIGNpbiA+PiB3ID4+IGg7CiAgICBpbnQqIGEgPSBuZXcgaW50W3cgKiBoXTsKICAgIGJ1aWxkU25haWxSZXZlcnNlKGEsIHcsIGgpOwogICAgcHJpbnRBcnJheShhLCB3LCBoKTsKICAgIGRlbGV0ZVtdIGE7CiAgICBmZmx1c2goc3RkaW4pOwogICAgZ2V0Y2hhcigpOwogICAgcmV0dXJuIDA7Cn0=