#include <bits/stdc++.h>
int a[5][100005];
int b[100005][5];
int main() {
  int n, m;
  std::cin >> n >> m;
  if (n == 1 && m == 1)
    std::cout << "YES\n1\n";
  else if (n == 3 && m == 3) {
    std::cout << "YES\n";
    std::cout << "5 1 9\n7 6 4\n2 8 3\n";
  } else if (std::max(n, m) <= 3) {
    std::cout << "NO\n";
  } else if (m == 4 || n == 4) {
    std::cout << "YES\n";
    if (m == 4) {
      for (int i = 0; i < n; i++) {
        if (i % 2 == 1) {
          std::cout << i * 4 + 2 << " " << i * 4 + 4 << " " << i * 4 + 1 << " "
                    << i * 4 + 3 << "\n";
        } else {
          std::cout << i * 4 + 3 << " " << i * 4 + 1 << " " << i * 4 + 4 << " "
                    << i * 4 + 2 << "\n";
        }
      }
    } else if (n == 4) {
      for (int j = 1; j <= m; j++) {
        if (j % 2 == 1) {
          a[3][j] = j + 2 * m;
          a[2][j] = j;
          a[1][j] = j + 3 * m;
          a[0][j] = j + m;
        } else {
          a[0][j] = j + 2 * m;
          a[1][j] = j;
          a[2][j] = j + 3 * m;
          a[3][j] = j + m;
        }
      }
      for (int i = 0; i < n; i++) {
        for (int j = 1; j <= m; j++) {
          std::cout << a[i][j] << " ";
        }
        std::cout << "\n";
      }
    }
  } else {
    std::cout << "YES\n";
    if (m > 4) {
      for (int i = 0; i < n; i++) {
        int offset = i * m;
        if (i % 2 == 0) {
          for (int j = 1; j < std::ceil(m / 2.0); j++) {
            std::cout << offset + j << " " << offset + j + std::ceil(m / 2.0)
                      << " ";
          }
          if (m % 2 == 0)
            std::cout << offset + std::ceil(m / 2.0) << " " << offset + m
                      << "\n";
          else
            std::cout << offset + std::ceil(m / 2.0) << "\n";
        } else {
          for (int j = 1; j < std::ceil(m / 2.0); j++) {
            std::cout << offset + j + (m / 2) << " " << offset + j << " ";
          }
          if (m % 2 == 0)
            std::cout << offset + m << " " << offset + std::ceil(m / 2.0)
                      << "\n";
          else
            std::cout << offset + m << "\n";
        }
      }
    } else {
      for (int j = 0; j < m; j++) {
        int offset = j;
        if (j % 2 == 0) {
          for (int i = 0; i < std::ceil(n / 2.0); i++) {
            b[2 * i][j] = offset + 1 + i * m;
            b[2 * i + 1][j] = offset + 1 + i * m + std::ceil(n / 2.0) * m;
          }
        } else {
          for (int i = 0; i < std::ceil(n / 2.0); i++) {
            b[2 * i][j] = offset + 1 + i * m + (n / 2) * m;
            b[2 * i + 1][j] = offset + 1 + i * m;
          }
        }
      }
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
          std::cout << b[i][j] << " ";
        }
        std::cout << "\n";
      }
    }
  }
}
