#include <bits/stdc++.h>   using namespace std;   inline void read(int &x) {     char ch = getchar();     x = 0;     while (!isdigit(ch)) ch = getchar();     while (isdigit(ch)) x = x * 10 + ch - 48, ch = getchar();   }   int n, m, a[238][238], x[238], y[238];   signed main() {     read(n), read(m);     for (int i = 1; i <= n; ++i)       for (int j = 1; j <= m; ++j) read(a[i][j]);     if (n == 1) {       puts( YES );       puts( 0 );       for (int i = 1; i <= m; ++i) a[1][i] ? putchar(48) : putchar(49);       return 0;     }     if (m == 1) {       puts( YES );       for (int i = 1; i <= n; ++i) a[i][1] ? putchar(48) : putchar(49);       puts(  );       return putchar(48), 0;     }     int ok = 1, cnt = 0, w, qwq;     for (int i = 1; i <= m; ++i) y[i] = a[1][i];     for (int i = 2; i <= n; ++i) {       int tmp = 0;       for (int j = 2; j <= m; ++j)         if ((a[i][j] ^ y[j]) != (a[i][j - 1] ^ y[j - 1]))           ++tmp, qwq = (a[i][j] ^ y[j]);       if (tmp) {         cnt += tmp, w = i;         if (cnt > 1) {           ok = 0;           break;         }       }     }     if (ok) {       puts( YES );       if (cnt) {         for (int i = 2; i < w; ++i) x[i] = a[i][1] ^ y[1];         x[w] = qwq ^ 1;         for (int i = w + 1; i <= n; ++i) x[i] = a[i][1] ^ y[1] ^ 1;       } else         for (int i = 2; i <= n; ++i) x[i] = a[i][1] ^ y[1];       for (int i = 1; i <= n; ++i) putchar(x[i] + 48);       puts(  );       for (int i = 1; i <= m; ++i) putchar(y[i] + 48);       return 0;     }     ok = 1, cnt = 0;     for (int i = 1; i <= m; ++i) y[i] = a[n][i] ^ 1;     for (int i = 1; i < n; ++i) {       int tmp = 0;       for (int j = 2; j <= m; ++j)         if ((a[i][j] ^ y[j]) != (a[i][j - 1] ^ y[j - 1]))           ++tmp, qwq = (a[i][j] ^ y[j]);       if (tmp) {         cnt += tmp, w = i;         if (cnt > 1) {           ok = 0;           break;         }       }     }     if (ok) {       puts( YES );       if (cnt) {         for (int i = 1; i < w; ++i) x[i] = a[i][1] ^ y[1];         x[w] = qwq ^ 1;         for (int i = w + 1; i < n; ++i) x[i] = a[i][1] ^ 1 ^ y[1];       } else         for (int i = 1; i < n; ++i) x[i] = a[i][1] ^ y[1];       for (int i = 1; i <= n; ++i) putchar(x[i] + 48);       puts(  );       for (int i = 1; i <= m; ++i) putchar(y[i] + 48);       return 0;     }     return puts( NO ), 0;   }   