#include <bits/stdc++.h>
using namespace std;
void no() {
  cout << -1 << "\n";
  exit(0);
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  int m;
  cin >> n;
  cin >> m;
  vector<vector<int> > ans(n, vector<int>(m));
  int j = 1;
  if (n == 1 && m != 1 || n != 1 && m == 1) {
    int i = 0;
    int j = m - (m % 2 == 0);
    if (m == 1) {
      j = n - (n % 2 == 0);
    }
    for (; j > 0; ++i, j -= 2) {
      ans[m == 1 ? i : 0][m == 1 ? 0 : i] = j;
    }
    j = m - (m & 1);
    if (m == 1) {
      j = n - (n & 1);
    }
    for (; j > 1; j -= 2, ++i) {
      ans[m == 1 ? i : 0][m == 1 ? 0 : i] = j;
    }
  } else if (n == 3 && m == 2) {
    ans[0] = {1, 4};
    ans[1] = {5, 2};
    ans[2] = {3, 6};
  } else {
    for (int r = 0; r < n; r += 2) {
      for (int c = 0; c < m; ++c) {
        if (c & 1) {
          if (r < n - 1) {
            ans[r + 1][c] = j++;
          }
        } else {
          ans[r][c] = j++;
        }
      }
    }
    for (int r = 1; r < n; r += 2) {
      for (int c = 0; c < m; ++c) {
        if (c & 1) {
          ans[r - 1][c] = j++;
        } else {
          ans[r][c] = j++;
        }
      }
    }
    if (n & 1) {
      for (int c = 0; c < m; ++c) {
        if (c & 1) {
          ans[n - 1][c] = j++;
        }
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      if (i && j) {
        if (abs(ans[i][j] - ans[i - 1][j]) < 2 ||
            abs(ans[i][j] - ans[i][j - 1]) < 2) {
          no();
        }
      } else if (i) {
        if (abs(ans[i][j] - ans[i - 1][j]) < 2) {
          no();
        }
      } else if (j) {
        if (abs(ans[i][j] - ans[i][j - 1]) < 2) {
          no();
        }
      }
    }
  }
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < m; ++j) {
      cout << ans[i][j] << " \n"[j == m - 1];
    }
  }
}
