#include <bits/stdc++.h>
using namespace std;
int n, m;
bool find(vector<vector<bool>>& b, vector<bool>& row, bool k, int r) {
  int one = 0, zero = 0;
  if (n == r) return 1;
  if (k == 1) {
    for (int i = 0; i < m; i++) {
      if (b[r][i] == 1)
        one++;
      else
        zero++;
    }
    if (one == m)
      return find(b, row, 1, r + 1);
    else if (zero == m) {
      row[r] = 1;
      return find(b, row, 1, r + 1);
    } else
      return 0;
  } else {
    int i;
    bool q = 1;
    int one = 0, zero = 0;
    for (i = 0; i < m; i++) {
      if (b[r][i])
        one++;
      else
        zero++;
    }
    if (one == m || zero == m) {
      if (one == m) row[r] = 1;
      return find(b, row, 0, r + 1);
    }
    for (i = 0; i < m; i++) {
      if (b[r][i] == 1) break;
    }
    for (; i < m; i++) {
      if (b[r][i] == 0) break;
    }
    if (i == m) return find(b, row, 1, r + 1);
    for (i = 0; i < m; i++)
      if (b[r][i] == 0) break;
    for (; i < m; i++)
      if (b[r][i]) break;
    if (i < m) return 0;
    row[r] = 1;
    return find(b, row, 1, r + 1);
  }
}
int main() {
  int i, j;
  cin >> n >> m;
  int p;
  vector<vector<bool>> a(n, vector<bool>(m));
  vector<vector<bool>> b(n, vector<bool>(m));
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> p;
      a[i][j] = p;
    }
  }
  vector<bool> temp(m + 1, 0), col(m, 0), row(n, 0);
  for (i = m; i >= 0; i--) {
    temp[i] = 1;
    for (int p = 0; p < m; p++) col[p] = 0;
    for (int p = 0; p < n; p++) row[p] = 0;
    for (int p = 0; p < n; p++)
      for (int q = 0; q < m; q++) b[p][q] = a[p][q];
    for (j = 0; j < m; j++) {
      if (temp[j] != b[0][j]) {
        for (int k = 0; k < n; k++) {
          if (b[k][j] == 1)
            b[k][j] = 0;
          else
            b[k][j] = 1;
        }
        col[j] = 1;
      }
    }
    bool q = 1;
    if (i == m) q = 0;
    if (find(b, row, q, 1)) {
      cout << "YES" << endl;
      for (i = 0; i < n; i++) cout << row[i];
      cout << endl;
      for (i = 0; i < m; i++) cout << col[i];
      cout << endl;
      return 0;
    }
  }
  cout << "NO" << endl;
  return 0;
}
