import java.util.Scanner;
/**
* 输出螺旋数组(N*M)
* @author msidolphin
*
*/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int M = in.nextInt();
in.close();
int[][] array = new int[N][M];
//左上角和右下角坐标
int x1 = 0;
int y1 = 0;
int x2 = N - 1;
int y2 = M - 1;
int k = 1;
while(true) {
//针对当两点处于同一行的情况
if(x1 - x2 == 0 && y1 <= y2) {
for(int i = y1 ; i <= y2 ; ++i ) {
array[x1][i] = k;
k++;
}
break;
}
//如果两点重合或错开,则数组构造完毕
if(x2 - x1 <= 0 && y2 - y1 <= 0) {
break;
}
int x3 = x1; //暂存x1 y1 x2 y2的值
int y3 = y1;
int x4 = x2;
int y4 = y2;
while(true) {
if(x1 < x2) {
array[x1][y1] = k;
k++;
if(y1 == y2) {
x1++;
}else {
y1++;
}
}else {
break;
}
}
while(true) {
if(x2 > x3){
array[x2][y2] = k;
k++;
if(y2 == y3) {
x2--;
}else {
y2--;
}
}else {
break;
}
}
//左上角坐标向右下移一个单位,右下角向上移一个单位
x1 = x3 + 1;
y1 = y3 + 1;
x2 = x4 - 1;
y2 = y4 - 1;
//两点重合,在结束循环前赋值
if(x1 == x2 && y1 == y2) {
array[x1][y1] = k;
}
}
//打印数组
for(int i = 0 ; i < N ; ++i) {
for(int j = 0 ; j < M ; ++j) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
7 X 11
1X10