#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, m, v = 1;
  scanf("%d%d", &n, &m);
  if (n == 1 && m == 1) {
    printf("YES\n1\n");
  } else if (n == 1 || m == 1) {
    if ((m == 1 && n <= 3) || (n == 1 && m <= 3))
      printf("NO\n");
    else if (n == 1) {
      printf("YES\n");
      for (int i = 2; i <= m; i += 2) {
        if (i > 2) printf(" ");
        printf("%d", i);
      }
      for (int i = 1; i <= m; i += 2) {
        printf(" %d", i);
      }
      printf("\n");
    } else {
      printf("YES\n");
      for (int i = 2; i <= n; i += 2) {
        printf("%d\n", i);
      }
      for (int i = 1; i <= n; i += 2) {
        printf("%d\n", i);
      }
    }
  } else if (n <= 2 && m <= 3) {
    printf("NO\n");
  } else if (n <= 3 && m <= 2) {
    printf("NO\n");
  } else if (n == 3 && m == 3) {
    printf("YES\n5 1 7\n3 8 2\n9 4 6\n");
  } else if (n <= m) {
    vector<vector<int> > ans(n);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        ans[i].push_back(v++);
      }
    }
    vector<int> bak_i = ans[n - 1];
    for (int i = n - 1; i >= 1; i--) {
      for (int j = 1; j < m; j += 2) {
        ans[i][j] = ans[i - 1][j];
      }
    }
    for (int j = 1; j < m; j += 2) {
      ans[0][j] = bak_i[j];
    }
    for (int i = 0; i < n; i++) {
      int tmp = ans[i][m - (i % 2) - 1];
      for (int j = m - (i % 2) - 1; j >= 0; j -= 2) {
        if (j - 2 >= 0)
          ans[i][j] = ans[i][j - 2];
        else
          ans[i][j] = tmp;
      }
    }
    printf("YES\n");
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (j > 0) printf(" ");
        printf("%d", ans[i][j]);
      }
      printf("\n");
    }
  } else {
    vector<vector<int> > ans(n);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        ans[i].push_back(v++);
      }
    }
    vector<int> bak_j;
    for (int i = 0; i < n; i++) bak_j.push_back(ans[i][m - 1]);
    for (int j = m - 1; j >= 1; j--) {
      for (int i = 1; i < n; i += 2) {
        ans[i][j] = ans[i][j - 1];
      }
    }
    for (int i = 1; i < n; i += 2) {
      ans[i][0] = bak_j[i];
    }
    for (int j = 0; j < m; j++) {
      int tmp = ans[n - (j % 2) - 1][j];
      for (int i = n - (j % 2) - 1; i >= 0; i -= 2) {
        if (i - 2 >= 0)
          ans[i][j] = ans[i - 2][j];
        else
          ans[i][j] = tmp;
      }
    }
    printf("YES\n");
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        if (j > 0) printf(" ");
        printf("%d", ans[i][j]);
      }
      printf("\n");
    }
  }
  return 0;
}
