#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int n, m;
int b[N][N];
bool row[N], col[N];
int ans[N][N];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) row[i] = 1;
  for (int i = 1; i <= m; ++i) col[i] = 1;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      scanf("%d", &b[i][j]);
      if (!b[i][j]) {
        row[i] = 0;
        col[j] = 0;
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      if (b[i][j]) {
        if (!row[i] && !col[j]) {
          puts("NO");
          return 0;
        }
      }
    }
  }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) ans[i][j] = (row[i] && col[j] ? 1 : 0);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) {
      if (!b[i][j]) {
        for (int k = 1; k <= n; ++k)
          if (ans[k][j] == 1) {
            puts("NO");
            return 0;
          }
        for (int k = 1; k <= m; ++k)
          if (ans[i][k] == 1) {
            puts("NO");
            return 0;
          }
      } else {
        bool have = 0;
        for (int k = 1; k <= n; ++k)
          if (ans[k][j] == 1) have = 1;
        for (int k = 1; k <= m; ++k)
          if (ans[i][k] == 1) have = 1;
        if (!have) {
          puts("NO");
          return 0;
        }
      }
    }
  }
  puts("YES");
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) printf("%d ", ans[i][j]);
    puts("");
  }
  return 0;
}
