//#include <stdio.h>
//
//int main()
//{
// int a;
// int f=1;
// scanf("%d",&a);
// for (a;a!=1;a--)
// {
// f = f*a;
// }
//
// printf("%d", f);
//
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b;
// int f=0;
// scanf("%d %d",&a, &b);
// for(a; a<=b; a++)
// {
// if (a%2 == 0)
// {
// f = f-a;
// } else{
// f= f+a;
// }
// }
// printf("%d", f);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int n,t,k;
// double i;
// scanf("%d", &n);
// for (i=n; i>=0; i--)
// {
// t = sqrt(i);
// if(i==t*t)
// {
// break;
// }
// }
// k = n-i;
// printf("%d %d",k,t);
//
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// double s,e,f=0,t=0,m=0;
// int i;
// for (i=0; i<5; i++)
// {
// scanf("%lf %lf", &s, &e);
//
// if(e-s-1<=0)
// {
// t=0;
// } else if (e-s-1>=4){
// t=4;
// } else{
// t = e-s-1;
// }
// f = f+t;
//
// }
// if (f>=15)
// {
// m = 0.95*f*10000;
// }
// else if (f<=5)
// {
// m = 1.05*f*10000;
// }
// else
// {
// m = f*10000;
// }
// printf("%.0lf", m);
// return 0;
//}
/*
#include<stdio.h>
int main()
{
int q,n,i,r=0;
int score=0;
scanf("%d", &n);
for(i=1; i<=n; i++)
{
r=0;
scanf("%d",&q);
if (q==1)
{
score++;
for (; q==1;)
{
scanf("%d", &q);
i++;
if(q==1)
{
r++;
}
score = score + r;
}
}
}
printf("%d", score);
return 0;
}
*/
//#include <stdio.h>
//
//int main() {
// printf("\u250C\u252C\u2510\n");
// printf("\u251C\u253C\u2524\n");
// printf("\u2514\u2534\u2518\n");
//}
//#include <stdio.h>
//
//int main() {
// printf("Hello, World!");
//}
//#include <stdio.h>
//
//int main() {
// printf("Hello,\n");
// printf("World!");
// return 0;
//}
//#include <stdio.h>
//
//int main() {
// printf("\"c:\\test\"");
// return 0;
//}
//#include <stdio.h>
//
//int main() {
// int a=-2147483648;
// int b=2147483647;
// printf("%d %d", a,b);
// return 0;
//}
//#include <stdio.h>
//
//int main() {
// int a,b;
// scanf("%d:%d", &a,&b);
// printf("%d:%d", a,b);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b,c;
// scanf("%d.%d.%d", &a, &b,&c);
// printf("%04d.%02d.%02d", a,b,c);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b;
// scanf("%d-%d", &a, &b);
// printf("%06d%07d", a,b);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// char data[51] = "";
// scanf("%s",data);
// printf("%s",data);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// char data[2001] = ""; // accept character up to 2000 letters
// fgets(data,2000,stdin); //allow space to be included in character
// scanf("%s",data);
// printf("%s",data);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b;
// scanf("%d.%d",&a,&b);
// printf("%d\n",a);
// printf("%d",b);
// return 0;
//}
\
//#include <stdio.h>
//
//int main()
//{
// char data[30] = "";
// int i;
// scanf("%s", data);
// for(i=0;data[i]!='\0';i++){
// printf("\'%c\'\n", data[i]);
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b,c,d,e;
// scanf("%1d%1d%1d%1d%1d",&a,&b,&c,&d,&e);
// printf("\[%d\]\n",a*10000);
// printf("\[%d\]\n",b*1000);
// printf("\[%d\]\n",c*100);
// printf("\[%d\]\n",d*10);
// printf("\[%d\]\n",e);
//
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b,c;
// scanf("%d:%d:%d",&a,&b,&c);
// printf("%d",b);
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n,m;
// scanf("%d %d",&n, &m);
// for(i=1;i<=n;i++){
// for(j=1; j<=m; j++){
// printf("%d %d\n",i,j);
// }
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int r,g,b;
// int i,j,k,s=0;
// scanf("%d %d %d", &r,&g,&b);
// for(i=0;i<r;i++){
// for(j=0;j<g;j++){
// for(k=0;k<b;k++){
// printf("%d %d %d\n",i,j,k);
// s++;
// }
// }
// }
// printf("%d",s);
//}
//#include <stdio.h>
//
//int main()
//{
// int a,b,i,j,q;
//
// scanf("%d %d",&a, &b);
// for(j=a; j<=b;j++){
// for(i=1;i<=9;i++){
// q=i*j;
// printf("%d*%d=%d\n",j,i,q);
// }
// }
//
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n;
// scanf("%d",&n);
// for(i=0;i<n;i++){
// for(j=0; j<n;j++){
// printf("*");
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n;
// scanf("%d",&n);
// for(i=0;i<n;i++){
// for(j=0;j<=i;j++){
// printf("*");
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n;
// scanf("%d",&n);
// for(i=0;i<=n;i++){
// for(j=i;j<n;j++){
// printf("*");
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=0;i<=n;i++){
// for(j=0;j<i;j++){
// printf(" ");
// }
// for(j=i;j<n;j++){
// printf("*");
// }
//
// printf("\n");
// }
//
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n;
// scanf("%d",&n);
// for(i=0;i<n; i++)
// {
// for(j=0;j<n; j++)
// {
// if(i==0||i==n-1||j==0||j==n-1)
// {
//
// printf("*");
// }else{
// printf(" ");
// }
//
// }
// printf("\n");
// }
// }
//#include <stdio.h>
//
//int main()
//{
// int i,j,n;
// scanf("%d",&n);
// for(i=0;i<n;i++){
// for(j=i;j>=0;j--)
// {
// printf("*");
// }
// printf("\n");
// }
// i--;
// for(i;i>0;i--){
// for(j=i;j>0;j--){
// printf("*");
// }
//
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n,k=0;
// scanf("%d",&n);
// {
// for(i=1; (i*2-1)<=n; i++)
// {
// for(j=i; j<(n+1)/2; j++)
// {
// printf(" ");
// }
// for(j=0; j<2*i-1; j++)
// {
// printf("*");
// }
//
// printf("\n");
// }
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// for(j=0;j<i-1;j++){
// printf(" ");
// }
// printf("**");
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// for(j=1;j<=n;j++){
// if(i==1||i==n||j==i||j+i==n+1|j==1||j==n){
// printf("*");
// }else{
// printf(" ");
// }
// }
// printf("\n");
// }
//
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=1; i<=n; i++)
// {
// for(j=1; j<=n; j++)
// {
// if(i==1||i==n||i==(n+1)/2||j==1||j==n||i==j||i+j==n+1||j==(n+1)/2)
// {
// printf("*");
// }
// else
// {
// printf(" ");
// }
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// for(j=i;j-n<0;j++){
// printf(" ");
// }
// for(j=1;j<=n;j++){
// printf("*");
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int h,k,i,j;
// char d;
// scanf("%d %d %c",&h,&k,&d);
// for(i=0; i<h; i++)
// {
// if(d=='L')
// {
// for(j=i; j>0; j--)
// {
// printf(" ");
// }
// for(j=0; j<k; j++)
// {
// printf("*");
// }
// }else
// {
// for(j=i; j<h-1;j++)
// {
// printf(" ");
// }
// for(j=0; j<k; j++)
// {
// printf("*");
// }
// }
//
// printf("\n");
//}
//
//}
//
//#include <stdio.h>
//
//int main()
//{
// int i,j,n,k;
// scanf("%d %d",&n,&k);
// for(i=1;i<=n;i++){
// for(j=1;j<=n;j++){
// if(i==1||i==n||j==1||j==n||(j+i-1)%k==0){
// printf("*");
// }else{
// printf(" ");
// }
//
// }
// printf("\n");
//}
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,k,h,r;
// scanf("%d %d",&h, &r);
// for(i=1; i<=r; i++)
// {
// for(j=0; j<=h; j++)
// {
// for(k=0; k<j; k++)
// {
// printf(" ");
// }
// printf("\n");
// }
// for(j=0; j<h; j++)
// {
// for(k=h+1; k<2*h; k++)
// {
// printf(" ");
// }
// printf("\n");
// }
// for(j=1; j<2*h; j++)
// {
// printf("*");
// }
// }
//
//}
//
//
//
/*
#include <stdio.h>
int main()
{
int i,j,h,r,k=0;
scanf("%d %d",&h,&r);
for(i=1; i<=r; i++)
{
for(j=1; j<=2*h-1; j++)
{
if(j<=h)
{
for(k=j; k<=h; k++)
{
if(k==j)
{
printf("*");
}
else
{
printf(" ");
}
}
}
else
{
for(k=j;k<2*h;k++){
if(k+j==2*h){
printf("*");
}
else
{
printf(" ");
}
}
}
printf("\n");
}
}
}
*/
//#include <stdio.h>
//
//int main()
//{
// int n,i,j;
// scanf("%d",&n);
// for(i=1;i<=2*n;i++){
// for(j=1;j<=2*n;j++){
// if(i+j==n+1||i+j==3*n+1||i+j==n+2*i||i+j==n+2*j){
// printf("*");
// }else{printf(" ");}
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j,sum=0,multiplier=0;
// scanf("%d",&n);
// for(j=1;j<=n;j++){
// multiplier=multiplier+j;
// sum=sum+multiplier;
// }
// printf("%d",sum);
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,k;
// scanf("%d",&k);
// for(i=1;i<=6;i++){
// for(j=1;j<=6;j++){
// if(j+i==k){
// printf("%d %d\n",i,j);
// }
// }
// }
//
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j;
// for(i=1; i<=9; i++)
// for(j=2; j<=5; j++)
// {
// if(j<5)
// {
// printf("%d x %d = %2d\t",j,i,j*i);
// }
// else
// {
// printf("%d x %d = %2d\n",j,i,j*i);
// }
//
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int n,m,i,j;
// scanf("%d %d",&n,&m);
// for(i=1;i<=m;i++){
// for(j=1;j<=n;j++){
// if(i==1&&j==1||i==1&&j==n||j==1&&i==m||i==m&&j==n){
// printf("+");
// }else if(i==1||i==m){
// printf("-");
// }else if(j==1||j==n){
// printf("|");
// }else{
// printf(" ");
// }
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int i,n,t;
// int array[24] = {};
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// scanf("%d",&t);
// array[t]=array[t]+1;
//
// }
// for(i=1;i<=23;i++)
// {
// printf("%d ",array[i]);
// }
//
//#include <stdio.h>
//
//int main()
//{
// int n,i;
// int a[100000]={};
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// scanf("%d",&a[i]);
// }
// for(i=n;i>=1;i--){
// printf("%d ",a[i]);
// }
//
// return 0;
//#include <stdio.h>
//
//int main()
//{
// int n,i,min=0;
// int a[10000]={};
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// scanf("%d",&a[i]);
// }
// min = a[n];
// for(i=n;i>0;i--){
// min = (min<a[i])? min:a[i];
// }
// printf("%d",min);
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i;
// int a[1000]={};
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// scanf("%d",&a[i]);
// }
// for(i=n;i>0;i--){
// printf("%d ",a[i]);
// }
//
// return 0;
//}
//#include <stdio.h>
//
//int main()
//{
// int k,i,j;
// int a[101]={};
// scanf("%d",&k);
// for(i=0;i<k;i++){
// scanf("%d",&a[i]);
// }
// for(i=1;i<=2;i++){
// for(j=0;j<k;j++){
// printf("%d\n",a[j]);
// }
// }
// }
//#include <stdio.h>
//
//int main()
//{
// int n,i,j,k=0;
// int a[1000]={};
// scanf("%d",&n);
// for(i=0;i<n;i++){
// scanf("%d",&a[i]);
// }
// for(i=0;i<n;i++){
// k=i;
// for(j=0;j<n;j++){
// printf("%d ",a[k]);
// k++;
// if(k==n){
// k=0;
// }
// }
//
// printf("\n");
// }
//}
//설탕과자
//#include <stdio.h>
//
//int main()
//{
// int h,w,n,l,d,x,y,i,j;
// scanf("%d %d",&h,&w);
// int arr[101][101]={};
// scanf("%d",&n);
// for(i=1;i<=n;i++)
// {
// scanf("%d %d %d %d",&l,&d,&x,&y);
// for(j=1;j<=l;j++){
// arr[x][y]=1;
// if(d==0){
// y++;
// }else if(d==1){
// x++;
// }
// }
// }
// for(i=1;i<=h;i++){
// for(j=1;j<=w;j++){
// printf("%d ",arr[i][j]);
// }
// printf("\n");
// }
//}
//성실한 개미
//#include <stdio.h>
//
//int main()
//{
// int i,j,x=1,y=1;
// int arr[10][10]={};
// for(i=0;i<10;i++)
// {
// for(j=0;j<10;j++){
// scanf("%d",&arr[i][j]);
// }
// }
//
// for(i=0;i<=9;i++){
// for(j=0;j<9;j++){
// if(arr[x][y]==0){
// arr[x][y]=9;
// if(arr[x][y+1]==0||arr[x][y+1]==2){
// y++;
// }else if(arr[x+1][y]==0||arr[x+1][y]==2){
// x++;
// }else {
// break;
// }
// } else if(arr[x][y]==2){
// arr[x][y]=9;
// break;
// }else{
// break;
// }
// }
// }
// for(int i=0;i<10;i++){
// for(int j=0;j<10;j++){
// printf("%d ",arr[i][j]);
// }
// printf("\n");
// }
//
//
//}
//#include <stdio.h>
//
//int main()
//{
// int n,i,j,k=1;
// int arr[101][101]={};
// scanf("%d",&n);
// for(j=1;j<=n;j++){
// if(j%2==0){
// for(i=n;i>0;i--){
// arr[i][j]=k++;
// }
// } else{
// for(i=1;i<=n;i++){
// arr[i][j]=k++;
// }
//
// }
// }
// for(i=1;i<=n;i++){
// for(j=1;j<=n;j++){
// printf("%d ",arr[i][j]);
// }
// printf("\n");
// }
//}
//#include <stdio.h>
//
//int main()
//{
// int i,j,n,m;
// int arr[101][101]={};
// scanf("%d %d",&n,&m);
//
//
// return 0;
//}
//
//
//지뢰찾기 포기...
//#include <stdio.h>
//int main()
//{
// int n,i;
// int arr[11]={};
// int a[11]={};
// scanf("%d",&n);
// for(i=1;i<=n;i++){
// scanf("%d",arr[i]);
// }
// for(i=1;i<=n;i++){
//
// a[i+2]=abs(arr[i+1]-arr[i]);
//
// }
//달팽이 1 왜 에러뜨는건지
//#include <stdio.h>
//
//int main()
//{
// int n,m,i=0,j=0,k=0;
// int direction =0;
// int arr[101][101]= {};
// scanf("%d %d",&n,&m);
//
// for(k=1; k<=n*m; k++)
// {
// arr[i][j]=k;
// if(direction==0)
// {
// j++;
// if(j%m==m-1||arr[i][j]!=0)
// {
// direction++;
// if(i!=0){
// j--;
// i++;
// }
//
// }
// }
// else if(direction==1)
// {
// i++;
// if(i%n==n-1|| arr[i][j]!=0)
// {
// direction++;
// if(j!=m-1){
// i--;
// j--;
// }
// }
// }
// else if(direction==2)
// {
// j--;
// if(j==0||arr[i][j]!=0)
// {
// direction++;
// if(k>n+m+n-1){
// j++;
// i--;
// }
// }
// }
// else if(direction==3)
// {
// i--;
// if(i==0||arr[i][j]!=0)
// {
// direction=0;
// if(i!=n-1){
// i++;
// j++;
// }
//
// }
// }
//
// }
//for(i=0; i<n; i++)
//{
// for(j=0; j<m; j++)
// {
// printf("%d ",arr[i][j]);
// }
// printf("\n");
//}
//return 0;
//}
// snail2 time over?? ...
//#include <stdio.h>
//
//int main()
//{
// int n,m,i=0,j=0,k=0;
// int dir=0;
// int arr[101][101]={};
// scanf("%d %d",&n,&m);
// for(k=n*m;k>0;k--){
// arr[i][j]=k;
// if(dir==0)
// {
// j++;
// if(j%m==m-1||arr[i][j]!=0)
// {
// dir++;
// if(i!=0){
// j--;
// i++;
// }
//
// }
// }
// else if(dir==1)
// {
// i++;
// if(i%n==n-1|| arr[i][j]!=0)
// {
// dir++;
// if(j!=m-1){
// i--;
// j--;
// }
// }
// }
// else if(dir==2)
// {
// j--;
// if(j==0||arr[i][j]!=0)
// {
// dir++;
// if(k<n+m+n-1){
// j++;
// i--;
// }
// }
// }
// else if(dir==3)
// {
// i--;
// if(i==0||arr[i][j]!=0)
// {
// dir=0;
// if(i!=n-1){
// i++;
// j++;
// }
//
// }
// }
//
// }
//for(i=0; i<n; i++)
//{
// for(j=0; j<m; j++)
// {
// printf("%d ",arr[i][j]);
// }
// printf("\n");
//}
//return 0;
//}
//SNAIL 3333
#include <stdio.h>
int main()
{
int n,m,i=0,j=0,k=0;
int dir=1;
int arr[101][101]={};
scanf("%d %d",&n,&m);
j=m-1;
for(k=1;k<=n*m;k++){
arr[i][j]=k;
if(dir==0)
{
j++;
if(arr[i][j]!=0)
{
dir++;
// if(i!=0){
j--;
i++;
//}
}
}
else if(dir==1)
{
i++;
if(i%n==n-1|| arr[i][j]!=0)
{
dir++;
if(j!=m-1){
i--;
j--;
}
}
}
else if(dir==2)
{
j--;
if(j==0||arr[i][j]!=0)
{
dir++;
if(k>n+m-1){
j++;
i--;
}
}
}
else if(dir==3)
{
i--;
if((i==0&&j==0)||arr[i][j]!=0)
{
dir=0;
if(i==0&&j==0){
}
else {i++;
j++;
}
}
}
}
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}