#include <bits/stdc++.h>
using namespace std;
int ans[105][105];
int cnt;
int main() {
  int n, m;
  while (scanf("%d%d", &n, &m) != EOF) {
    cnt = 1;
    bool flag = false;
    if (n == 1 && m == 1) {
      printf("1\n");
      continue;
    }
    if (n == 2 && m == 2) {
      printf("-1\n");
      continue;
    }
    if ((n == 1 && m <= 3) || (n <= 3 && m == 1)) {
      printf("-1\n");
      continue;
    }
    if (n == 1 && m == 4) {
      printf("3 1 4 2\n");
      continue;
    }
    if (m == 1 && n == 4) {
      printf("3\n1\n4\n2\n");
      continue;
    }
    if (n == 1) {
      for (int i = 1; i <= m; i += 2) ans[1][i] = cnt++;
      for (int i = 2; i <= m; i += 2) ans[1][i] = cnt++;
      for (int i = 1; i <= m; i++)
        printf("%d%c", ans[1][i], i < m ? ' ' : '\n');
      continue;
    }
    if (m == 1) {
      for (int i = 1; i <= n; i += 2) ans[i][1] = cnt++;
      for (int i = 2; i <= n; i += 2) ans[i][1] = cnt++;
      for (int i = 1; i <= n; i++) printf("%d\n", ans[i][1]);
      continue;
    }
    if (n < m) {
      flag = true;
      swap(n, m);
    }
    for (int i = 2; i <= n; i++) {
      int j = i, k = 1;
      while (j >= 1 && k <= m) {
        ans[j][k] = cnt++;
        j--, k++;
      }
    }
    for (int i = 2; i < m; i++) {
      int j = n, k = i;
      while (k <= m && j >= 1) {
        ans[j][k] = cnt++;
        j--, k++;
      }
    }
    ans[1][1] = cnt++;
    ans[n][m] = cnt++;
    if (!flag) {
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++)
          printf("%d%c", ans[i][j], j < m ? ' ' : '\n');
      }
    } else {
      for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++)
          printf("%d%c", ans[j][i], j < n ? ' ' : '\n');
      }
    }
  }
  return 0;
}
