#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m, l = 1;
  cin >> n >> m;
  if (n == 1 && m == 1) {
    cout << 1;
    return 0;
  }
  if (n * m < 4 || (n == 2 && m == 2)) {
    cout << -1;
    return 0;
  }
  if (m >= 5) {
    int a[n + 1][m + 1];
    for (int i = 1; i <= m; i += 2) {
      a[1][i] = l;
      l++;
    }
    for (int i = 2; i <= m; i += 2) {
      a[1][i] = l;
      l++;
    }
    for (int i = 1; i <= m; i++) {
      for (int j = 2; j <= n; j++) a[j][i] = a[j - 1][i] + m;
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) cout << a[i][j] << " ";
      cout << endl;
    }
  } else if (n >= 5) {
    swap(n, m);
    int a[n + 1][m + 1];
    for (int i = 1; i <= m; i += 2) {
      a[1][i] = l;
      l++;
    }
    for (int i = 2; i <= m; i += 2) {
      a[1][i] = l;
      l++;
    }
    for (int i = 1; i <= m; i++) {
      for (int j = 2; j <= n; j++) a[j][i] = a[j - 1][i] + m;
    }
    for (int i = 1; i <= m; i++) {
      for (int j = 1; j <= n; j++) cout << a[j][i] << " ";
      cout << endl;
    }
  } else if (n == 1 && m == 4)
    cout << "2 4 1 3";
  else if (n == 4 && m == 1)
    cout << "2\n4\n1\n3";
  else if (n == 2 && m == 3) {
    cout << "3 6 2\n5 1 4";
  } else if (n == 3 && m == 2)
    cout << "3 5\n6 1\n2 4";
  else if (n == 2 && m == 4)
    cout << "1 3 6 4\n7 5 2 8";
  else if (n == 4 && m == 2)
    cout << "1 7\n3 5\n6 2\n4 8";
  else if (n == 3 && m == 3)
    cout << "1 3 5\n6 8 2\n9 4 7";
  else if (n == 3 && m == 4)
    cout << "1 10 12 8\n5 7 9 2\n3 11 4 6";
  else if (n == 4 && m == 3)
    cout << "1 5 3\n10 7 11\n12 9 4\n8 2 6";
  else if (n == 4 && m == 4)
    cout << "1 16 14 12\n13 11 9 7\n15 3 6 10\n5 8 4 2";
  return 0;
}
