#include<bits/stdc++.h>
using namespace std;
int a[100][100],n,m;
//x y表示要填充的下标,k表示要填充的值
void fun(int x,int y,int k){
a[x][y] = k;
//按照顺时针:右、下、左、上,分别探测四个方向
//向右探测:右侧那个格子没有填值,且没有出方阵
if(a[x][y+1] == 0 && y+1<=m) fun(x,y+1,k+1);
if(a[x+1][y] == 0 && x+1<=n) fun(x+1,y,k+1);
if(a[x][y-1] == 0 && y-1>=1) fun(x,y-1,k+1);
if(a[x-1][y] == 0 && x-1>=1) fun(x-1,y,k+1);
}
int main(){
int i,j;
cin>>n>>m;
//从1,1点开始,填充1
fun(1,1,1);
//打印
for(i = 1;i <= n;i++){
for(j = 1;j <= m;j++){
cout<<setw(3)<<a[i][j];
}
cout<<endl;
}
}
/**************************************************************
Problem: 1586
User: admin
Language: C++
Result: Accepted
Time:63 ms
Memory:2112 kb
****************************************************************/