#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  if (n == 1 && m == 1) {
    cout << "YES\n";
    cout << 1 << '\n';
    return 0;
  }
  if (min(n, m) < 3 && max(n, m) <= 3) {
    cout << "NO\n";
    return 0;
  }
  if (n == 1 && m == 4) {
    cout << "YES\n";
    cout << "2 4 1 3\n";
    return 0;
  }
  if (n == 4 && m == 1) {
    cout << "YES\n";
    cout << "2\n4\n1\n3\n";
    return 0;
  }
  if (n == 3 && m == 3) {
    cout << "YES\n";
    cout << "5 3 7\n9 1 6\n2 8 4\n";
    return 0;
  }
  bool change = false;
  if (n > m) {
    swap(n, m);
    change = true;
  }
  if (n == 1) {
    vector<int> num;
    for (int i = 1; i <= m; i += 2) num.push_back(i);
    for (int i = 2; i <= m; i += 2) num.push_back(i);
    char c = ' ';
    cout << "YES\n";
    if (change) {
      c = '\n';
    }
    for (int x : num) {
      cout << x << c;
    }
    if (!change) cout << '\n';
    return 0;
  }
  if (change) {
    swap(n, m);
    change = false;
  }
  vector<vector<int> > a(n, vector<int>(m));
  int cont = 1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      a[i][j] = cont++;
    }
  }
  if (n > m) {
    change = true;
  }
  if (!change) {
    for (int i = 0; i < n; i++) {
      if (i % 2 == 0) continue;
      vector<int> num;
      for (int j = 0; j < m; j++) {
        num.push_back(a[i][j]);
      }
      int idx = m - 2;
      for (int j = 0; j < m; j++) {
        a[i][j] = num[idx];
        idx++;
        idx %= m;
      }
    }
    for (int j = 0; j < m; j++) {
      if (j % 2 == 0) continue;
      for (int i = 1; i < n; i++) {
        swap(a[i][j], a[i - 1][j]);
      }
    }
  } else {
    for (int j = 0; j < m; j++) {
      if (j % 2 == 0) continue;
      vector<int> num;
      for (int i = 0; i < n; i++) num.push_back(a[i][j]);
      int idx = n - 2;
      for (int i = 0; i < n; i++) {
        a[i][j] = num[idx];
        idx++;
        idx %= n;
      }
    }
    for (int i = 0; i < n; i++) {
      if (i % 2 == 0) continue;
      for (int j = 1; j < m; j++) {
        swap(a[i][j], a[i][j - 1]);
      }
    }
  }
  change = false;
  cout << "YES\n";
  if (!change) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        cout << a[i][j] << " ";
      }
      cout << '\n';
    }
  } else {
    for (int j = 0; j < m; j++) {
      for (int i = 0; i < n; i++) {
        cout << a[i][j] << " ";
      }
      cout << '\n';
    }
  }
  return 0;
}
