#include <bits/stdc++.h>
using namespace std;
int main() {
  int N = 103, M = 103;
  long long int n, m, i, j, k, t, t1, t2 = 0, c = -1;
  cin >> n;
  cin >> m;
  long long int W[N][N], U[N][M], V[N][M], a[N], b[M];
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> W[i][j];
      c = max(c, W[i][j]);
    }
  }
  for (i = 1; i < n; i++) {
    t1 = 0;
    for (j = 0; j < m; j++) {
      V[i][j] = (W[i][j] - W[0][j]);
      if (V[i][j] != V[i][0] and t1 == 0) {
        if (t2 == 0) {
          t = V[i][j];
          t1 = 1;
          t2 = 1;
          k = max(V[i][0] - V[i][j], V[i][j] - V[i][0]);
        } else {
          if (k != max(V[i][0] - V[i][j], V[i][j] - V[i][0])) {
            cout << "NO";
            return 0;
          }
        }
      }
      if (V[i][j] != V[i][0] and V[i][j] != t and t1 == 1) {
        cout << "NO";
        return 0;
      }
    }
  }
  for (j = 1; j < m; j++) {
    for (i = 0; i < n; i++) {
      t1 = 0;
      U[i][j] = (W[i][j] - W[i][0]);
      if (U[i][j] != U[0][j] and t1 == 0) {
        if (t2 == 0) {
          t = U[i][j];
          t1 = 1;
          t2 = 1;
          k = max(U[0][j] - U[i][j], U[i][j] - U[0][j]);
        } else {
          if (k != max(U[0][j] - U[i][j], U[i][j] - U[0][j])) {
            cout << "NO";
            return 0;
          }
        }
      }
      if (U[i][j] != U[0][j] and U[i][j] != t and t1 == 1) {
        cout << "NO";
        return 0;
      }
    }
  }
  if (t2 == 0) {
    k = c + 1;
  }
  if (c >= k) {
    cout << "NO";
    return 0;
  }
  cout << "YES" << endl;
  cout << k << endl;
  a[0] = 0;
  b[0] = W[0][0];
  cout << a[0];
  for (i = 1; i < n; i++) {
    a[i] = k + V[i][0];
    cout << " " << a[i];
  }
  cout << endl << b[0];
  for (j = 1; j < m; j++) {
    b[j] = b[0] + k + U[0][j];
    cout << " " << b[j];
  }
  return 0;
}
