#include <bits/stdc++.h>
using namespace std;
int n, m;
int col[2][100005];
int trans[100005];
int main() {
  scanf("%d%d", &n, &m);
  if (max(n, m) == 1) {
    printf("YES\n");
    printf("1\n");
  } else if (max(n, m) == 2) {
    printf("NO\n");
  } else if (max(n, m) == 3) {
    if (min(n, m) == 3) {
      printf("YES\n");
      printf("1 3 8\n5 9 4\n7 2 6\n");
    } else
      printf("NO\n");
  } else if (max(n, m) == 4) {
    bool flag = false;
    if (n > m) {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
          trans[j * n + i + 1] = i * m + j + 1;
        }
      }
      flag = true;
      swap(n, m);
    }
    vector<vector<int> > mat(n, vector<int>(m));
    col[0][0] = 2;
    col[0][1] = 4;
    col[0][2] = 1;
    col[0][3] = 3;
    col[1][3] = 2;
    col[1][2] = 4;
    col[1][1] = 1;
    col[1][0] = 3;
    for (int i = 0; i < n; i++) {
      int cur = i * m;
      for (int j = 0; j < m; j++) {
        mat[i][j] = col[i & 1][j] + cur;
      }
    }
    printf("YES\n");
    if (flag) {
      for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) printf("%d ", trans[mat[j][i]]);
        printf("\n");
      }
    } else {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) printf("%d ", mat[i][j]);
        printf("\n");
      }
    }
  } else {
    bool flag = false;
    if (n > m) {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
          trans[j * n + i + 1] = i * m + j + 1;
        }
      }
      flag = true;
      swap(n, m);
    }
    vector<vector<int> > mat(n, vector<int>(m));
    for (int i = 0, a = 1, b = 2; i < m; i++) {
      if (a <= m) {
        col[0][i] = a;
        a += 2;
      } else {
        col[0][i] = b;
        b += 2;
      }
    }
    col[1][0] = col[0][m - 1];
    for (int i = 0; i < m - 1; i++) col[1][i + 1] = col[0][i];
    for (int i = 0; i < n; i++) {
      int cur = i * m;
      for (int j = 0; j < m; j++) {
        mat[i][j] = col[i & 1][j] + cur;
      }
    }
    printf("YES\n");
    if (flag) {
      for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) printf("%d ", trans[mat[j][i]]);
        printf("\n");
      }
    } else {
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) printf("%d ", mat[i][j]);
        printf("\n");
      }
    }
  }
  return 0;
}
