#include <bits/stdc++.h>
using namespace std;
int n, m, a[514][514];
vector<pair<int, pair<int, int> > > v;
bool cmp(pair<int, pair<int, int> > d1, pair<int, pair<int, int> > d2) {
  if ((d1.first >> 14) % 2 != (d2.first >> 14) % 2)
    return (d1.first >> 14) % 2 < (d2.first >> 14) % 2;
  return d1 < d2;
}
int vv[514 * 514];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) v.push_back({((i + j) << 14) + i, {i, j}});
  sort(v.begin(), v.end(), cmp);
  for (int i = 0; i < n * m; i++) vv[i] = i + 1;
  reverse(vv, vv + (n * m + 1) / 2);
  reverse(vv + (n * m + 1) / 2, vv + n * m);
  for (size_t i = 0; i < v.size(); i++)
    a[v[i].second.first][v[i].second.second] = vv[i];
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      if ((i > 1 && abs(a[i][j] - a[i - 1][j]) <= 1) ||
          (j > 1 && abs(a[i][j] - a[i][j - 1]) <= 1)) {
        puts("-1");
        exit(0);
      }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) printf("%d%c", a[i][j], " \n"[j == m]);
}
