#include <bits/stdc++.h>
using namespace std;
map<int, int> M;
char s[1005][1005];
int flag[2][2];
int main() {
  int p[16][2] = {0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 3, 2, 3, 0, 0,
                  0, 0, 1, 4, 2, 4, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0};
  M[2] = 1, M[4] = 2, M[8] = 3, M[16] = 4;
  int n, m, i, j;
  while (~scanf("%d%d", &n, &m)) {
    memset(flag, 0, sizeof(flag));
    for (i = 1; i <= n; i++) scanf("%s", s[i] + 1);
    for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j++)
        if (s[i][j] != '0') flag[i & 1][j & 1] |= 1 << s[i][j] - '1';
    int r0 = flag[0][0] | flag[0][1];
    int r1 = flag[1][0] | flag[1][1];
    int c0 = flag[0][0] | flag[1][0];
    int c1 = flag[0][1] | flag[1][1];
    for (i = 0; i < 15; i++)
      if (p[i][0] && (i & r0) == r0 && ((15 - i) & r1) == r1) {
        r0 = i;
        r1 = 15 - i;
        break;
      }
    if ((r0 ^ r1) == 15) {
      for (i = 1; i <= n; i++) {
        int fir = (i & 1) ? p[r1][0] : p[r0][0];
        int sec = (i & 1) ? p[r1][1] : p[r0][1];
        int odd = 0;
        for (j = 1; j <= m; j++)
          if (s[i][j] != '0')
            odd |= (j & 1) ? (1 << s[i][j] - '0')
                           : (1 << fir + sec - s[i][j] + '0');
        if (!(odd & (odd - 1))) {
          odd = odd ? M[odd] : fir;
          for (j = 1; j <= m; j++)
            s[i][j] = (j & 1) ? odd + '0' : fir + sec - odd + '0';
        } else
          break;
      }
      if (i > n) {
        for (i = 1; i <= n; i++) printf("%s\n", s[i] + 1);
        continue;
      }
    }
    for (i = 0; i < 15; i++)
      if (p[i][0] && (i & c0) == c0 && ((15 - i) & c1) == c1) {
        c0 = i;
        c1 = 15 - i;
        break;
      }
    if ((c0 ^ c1) == 15) {
      for (i = 1; i <= m; i++) {
        int fir = (i & 1) ? p[c1][0] : p[c0][0];
        int sec = (i & 1) ? p[c1][1] : p[c0][1];
        int odd = 0;
        for (j = 1; j <= n; j++)
          if (s[j][i] != '0')
            odd |= (j & 1) ? (1 << s[j][i] - '0')
                           : (1 << fir + sec - s[j][i] + '0');
        if (!(odd & (odd - 1))) {
          odd = odd ? M[odd] : fir;
          for (j = 1; j <= n; j++)
            s[j][i] = (j & 1) ? odd + '0' : fir + sec - odd + '0';
        } else
          break;
      }
      if (i > m) {
        for (i = 1; i <= n; i++) printf("%s\n", s[i] + 1);
        continue;
      }
    }
    printf("0\n");
  }
  return 0;
}
