#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
int a[1005][1005];
int n, m;
int r, c;
typedef struct{
int i, j;
int cur;
int dir;
}node;
queue<node> q;
void bfs(){
while (q.size()){
q.pop();
}
node t;
t.i=1, t.j=1;
t.cur=1;
t.dir=1;
a[1][1]=1;
q.push(t);
while (q.size()){
t = q.front();
q.pop();
if (t.cur==n*m){
continue;
}
if (t.dir==1){
if (a[t.i][t.j+1]==0 && t.j+1<=m){
node tt;
tt.i=t.i, tt.j=t.j+1;
tt.cur=t.cur+1;
tt.dir=t.dir;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}else{
node tt;
tt.i=t.i+1;
tt.j=t.j;
tt.cur=t.cur+1;
tt.dir=2;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}
}else if (t.dir==2){
if (a[t.i+1][t.j]==0 && t.i+1<=n){
node tt;
tt.i=t.i+1, tt.j=t.j;
tt.cur=t.cur+1;
tt.dir=t.dir;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}else{
node tt;
tt.i=t.i, tt.j=t.j-1;
tt.cur=t.cur+1;
tt.dir=3;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}
}else if (t.dir==3){
if (a[t.i][t.j-1]==0 && t.j-1>=1){
node tt;
tt.i=t.i, tt.j=t.j-1;
tt.cur=t.cur+1;
tt.dir=3;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}else{
node tt;
tt.i=t.i-1, tt.j=t.j;
tt.cur=t.cur+1;
tt.dir=4;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}
}else if (t.dir==4){
if (a[t.i-1][t.j]==0 && t.i-1>=1){
node tt;
tt.i=t.i-1, tt.j=t.j;
tt.cur=t.cur+1;
tt.dir=4;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}else{
node tt;
tt.i=t.i;
tt.j=t.j+1;
tt.cur=t.cur+1;
tt.dir=1;
a[tt.i][tt.j]=tt.cur;
q.push(tt);
}
}
}
}
int main(){
scanf("%d%d", &n, &m);
memset(a, 0, sizeof(a));
bfs();
for (int i=1; i<=n; i++){
for (int j=1; j<=m; j++){
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
int store[1005][1005];
int main() {
int n, m;
cin>>n>>m;
memset(store,0, sizeof(store));
int sum = n * m;
int row = 0, col = 0, cnt = 1;
store[row][col] = 1;
while(cnt < sum)
{
while(col + 1 < m && !store[row][col+1])
store[row][++col] = ++cnt;
while(row + 1 < n && !store[row+1][col])
store[++row][col] = ++cnt;
while(col - 1 >= 0 && !store[row][col-1])
store[row][--col] = ++cnt;
while(row - 1 >= 0 && !store[row-1][col])
store[--row][col] = ++cnt;
}
for (int i=0; i<n; i++){
for (int j=0; j<=m; j++){
printf("%3d", store[i][j]);
}
printf("\n");
}
return 0;
}