#include <bits/stdc++.h>
using namespace std;
int n, m;
int box[110][110];
int order[110][110];
bool vis[110];
bool flag = false;
int xx[] = {1, 0, -1, 0};
int yy[] = {0, 1, 0, -1};
void DFS(int x, int y, int cnt) {
  if (flag) {
    return;
  }
  if (cnt == n * m) {
    memcpy(order, box, sizeof(box));
    flag = true;
    return;
  }
  for (int i = 1; i <= n * m; ++i) {
    if (!vis[i]) {
      bool F = true;
      for (int j = 0; j < 4; ++j) {
        int nx = x + xx[j];
        int ny = y + yy[j];
        if (nx >= 1 && nx <= n && ny >= 1 && ny <= m) {
          if (box[nx][ny] == -1 ||
              (box[nx][ny] != i + 1 && box[nx][ny] != i - 1 &&
               box[nx][ny] != i + m && box[nx][ny] != i - m)) {
            continue;
          }
          F = false;
          break;
        }
      }
      if (F) {
        box[x][y] = i;
        vis[i] = true;
        if (y == m) {
          DFS(x + 1, 1, cnt + 1);
        } else {
          DFS(x, y + 1, cnt + 1);
        }
        box[x][y] = -1;
        vis[i] = false;
      }
    }
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  cin >> n >> m;
  if (n <= 4 && m <= 4) {
    memset(vis, false, sizeof(vis));
    memset(order, -1, sizeof(order));
    memset(box, -1, sizeof(box));
    DFS(1, 1, 0);
    if (flag) {
      cout << "YES\n";
      for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= m; ++j) {
          cout << order[i][j] << (j == m ? "\n" : " ");
        }
      }
    } else {
      cout << "NO\n";
    }
  } else {
    cout << "YES\n";
    if (n == 2 || m == 2) {
      int cnt = 0;
      for (int i = 1; i <= 4; ++i) {
        for (int j = i; j <= n * m; j += 4) {
          cout << j;
          cnt++;
          if (cnt == m) {
            cout << endl;
            cnt = 0;
          } else {
            cout << " ";
          }
        }
      }
    } else if (n == 3 || m == 3) {
      int cnt = 0;
      for (int i = 1; i <= 5; ++i) {
        for (int j = i; j <= n * m; j += 5) {
          cout << j;
          cnt++;
          if (cnt == m) {
            cout << endl;
            cnt = 0;
          } else {
            cout << " ";
          }
        }
      }
    } else {
      int cnt = 0;
      for (int i = 1; i <= n * m; i += 2) {
        cout << i;
        cnt++;
        if (cnt == m) {
          cout << endl;
          cnt = 0;
        } else {
          cout << " ";
        }
      }
      for (int i = 2; i <= n * m; i += 2) {
        cout << i;
        cnt++;
        if (cnt == m) {
          cout << endl;
          cnt = 0;
        } else {
          cout << " ";
        }
      }
    }
  }
  return 0;
}
