/*
#include <stdio.h>
int main()
{
int arr[100005]={};
int m=-10000000, n, k, i, j, s=0;
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<=n-k;i++)
{
for(j=0;j<k;j++)
{
s=s+arr[i+j];
}
if(s>m)
{
m=s;
}
s=0;
}
printf("%d",m);
return 0;
}
*/
/**
memoization
arr[i] : i번째 data 저장 (x)
arr[i] : i에 대한 정보 메모 ex) i가 입력된 갯수,
i가입력된적있으면1, 없으면0
*/
/*
#include <stdio.h>
int main()
{
int arr[10000005]={};
int n, n1, m, m1, i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&n1);
arr[n1]=1;
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&m1);
if(arr[m1]==1)
{
printf("1 ");
}
else
{
printf("0 ");
}
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int n, i, j, arr[32];
scanf("%d",&n);
for(i=0;;i++)
{
arr[i]=n%2;
n=n/2;
if(n==0)
{
break;
}
}
for(j=i;j>=0;j--)
{
printf("%d",arr[j]);
}
return 0;
}
*/
/**
층 호수
행 열
row column
*/
#include <stdio.h>
int main()
{
int arr[105][105]={};
int i, j, k=1, n, m;
scanf ("%d",&n);
scanf ("%d",&m);
for(j=m-1;j>=0;j--)
{
for(i=n-1;i>=0;i--)
{
arr[i][j]=k;
k++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0;
}



