#include <bits/stdc++.h>
using namespace std;
bool debug = 1;
int n, m, k;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
long long ln, lk, lm;
int a[4], col[2], pos[5][1005];
char s[1005][1005];
int ans[1005][1005];
void ck() {
  memset(pos, 0, sizeof pos);
  for (int(i) = 0; (i) < (int)(n); (i)++) {
    if (i % 2 == 0) {
      col[0] = a[0];
      col[1] = a[1];
    } else {
      col[0] = a[2];
      col[1] = a[3];
    }
    for (int(j) = 0; (j) < (int)(m); (j)++)
      if (s[i][j] != '0') {
        int x = s[i][j] - '0';
        if (x != col[0] && x != col[1]) return;
        if (pos[x][i] == 0)
          pos[x][i] = j % 2 + 1;
        else if (pos[x][i] != j % 2 + 1)
          return;
      }
  }
  for (int(i) = 0; (i) < (int)(n); (i)++) {
    if (i % 2 == 0) {
      col[0] = a[0];
      col[1] = a[1];
    } else {
      col[0] = a[2];
      col[1] = a[3];
    }
    if (pos[col[0]][i] == 0 && pos[col[1]][i] == 0) {
      pos[col[0]][i] = 1;
      pos[col[1]][i] = 2;
    } else if (pos[col[1]][i] == 0) {
      pos[col[1]][i] = 3 - pos[col[0]][i];
    } else if (pos[col[0]][i] == 0) {
      pos[col[0]][i] = 3 - pos[col[1]][i];
    }
    for (int(j) = 0; (j) < (int)(m); (j)++) {
      int p = j % 2 + 1;
      if (pos[col[0]][i] == p)
        printf("%d", col[0]);
      else
        printf("%d", col[1]);
    }
    puts("");
  }
  exit(0);
}
void ck1() {
  memset(pos, 0, sizeof pos);
  for (int(j) = 0; (j) < (int)(m); (j)++) {
    if (j % 2 == 0) {
      col[0] = a[0];
      col[1] = a[1];
    } else {
      col[0] = a[2];
      col[1] = a[3];
    }
    for (int(i) = 0; (i) < (int)(n); (i)++)
      if (s[i][j] != '0') {
        int x = s[i][j] - '0';
        if (x != col[0] && x != col[1]) return;
        if (pos[x][j] == 0)
          pos[x][j] = i % 2 + 1;
        else if (pos[x][j] != i % 2 + 1)
          return;
      }
  }
  for (int(j) = 0; (j) < (int)(m); (j)++) {
    if (j % 2 == 0) {
      col[0] = a[0];
      col[1] = a[1];
    } else {
      col[0] = a[2];
      col[1] = a[3];
    }
    if (pos[col[0]][j] == 0 && pos[col[1]][j] == 0) {
      pos[col[0]][j] = 1;
      pos[col[1]][j] = 2;
    } else if (pos[col[1]][j] == 0) {
      pos[col[1]][j] = 3 - pos[col[0]][j];
    } else if (pos[col[0]][j] == 0) {
      pos[col[0]][j] = 3 - pos[col[1]][j];
    }
    for (int(i) = 0; (i) < (int)(n); (i)++) {
      int p = i % 2 + 1;
      if (pos[col[0]][j] == p)
        ans[i][j] = col[0];
      else
        ans[i][j] = col[1];
    }
  }
  for (int(i) = 0; (i) < (int)(n); (i)++) {
    for (int(j) = 0; (j) < (int)(m); (j)++) printf("%d", ans[i][j]);
    puts("");
  }
  exit(0);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int(i) = 0; (i) < (int)(n); (i)++) scanf("%s", s[i]);
  for (int(i) = 1; (i) <= (int)(4); (i)++) a[i - 1] = i;
  do {
    ck();
    ck1();
  } while (next_permutation(a, a + 4));
  puts("0");
  return 0;
}
