#include <bits/stdc++.h>
using namespace std;
long long w[109][109];
long long r[109][109];
long long d[109][109];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) cin >> w[i][j];
  for (int i = 0; i < n; ++i) {
    for (int j = 1; j < m; ++j) r[i][j] = w[i][j] - w[i][j - 1];
  }
  for (int j = 0; j < m; ++j) {
    for (int i = 1; i < n; ++i) d[i][j] = w[i][j] - w[i - 1][j];
  }
  long long k = -1;
  for (int i = 0; i + 1 < n; ++i) {
    for (int j = 1; j < m; ++j)
      if (r[i][j] != r[i + 1][j]) {
        if ((r[i][j] >= 0 && r[i + 1][j] >= 0) ||
            (r[i][j] <= 0 && r[i + 1][j] <= 0)) {
          cout << "NO" << endl;
          return 0;
        }
        if (k == -1) {
          k = abs(r[i][j]) + abs(r[i + 1][j]);
        }
        if (k != abs(r[i][j]) + abs(r[i + 1][j])) {
          cout << "NO" << endl;
          return 0;
        }
      }
  }
  for (int j = 0; j + 1 < m; ++j) {
    for (int i = 1; i < n; ++i) {
      if (d[i][j] != d[i][j + 1]) {
        if ((d[i][j] >= 0 && d[i][j + 1] >= 0) ||
            (d[i][j] <= 0 && d[i][j + 1] <= 0)) {
          cout << "NO" << endl;
          return 0;
        }
        if (k == -1) {
          k = abs(d[i][j]) + abs(d[i][j + 1]);
        }
        if (k != abs(d[i][j]) + abs(d[i][j + 1])) {
          cout << "NO" << endl;
          return 0;
        }
      }
    }
  }
  vector<long long> a;
  vector<long long> b;
  if (k == -1) {
    k = 1000000000000;
  }
  a.push_back(0);
  b.push_back(w[0][0]);
  for (int i = 1; i < n; ++i) a.push_back((a[i - 1] + d[i][0] + k) % k);
  for (int i = 1; i < m; ++i) b.push_back((b[i - 1] + r[0][i] + k) % k);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j)
      if (w[i][j] != (a[i] + b[j] + k) % k) {
        cout << "NO" << endl;
        return 0;
      }
  cout << "YES" << endl;
  cout << k << endl;
  for (int i = 0; i < n; ++i) cout << a[i] << ' ';
  cout << endl;
  for (int i = 0; i < m; ++i) cout << b[i] << ' ';
  cout << endl;
}
