#include <bits/stdc++.h>
using namespace std;
string s[1500], ans[1500], y;
int n, m;
char a, b, c, d, e, p;
bool ch[400] = {};
bool check() {
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (s[i][j] != '0' && ans[i][j] != s[i][j]) return 0;
  return 1;
}
void find(char &u) {
  for (char k = '1'; k <= '4'; k++)
    if (!ch[k]) {
      ch[k] = 1;
      u = k;
      return;
    }
}
void chap() {
  for (int i = 0; i < n; i++, cout << endl)
    for (int j = 0; j < m; j++) cout << ans[i][j];
}
bool work() {
  a = e, b = e, c = e, d = e;
  fill(ch, ch + 300, 0);
  for (int j = 0; j < m; j++)
    for (int i = 0; i < n; i++)
      if (s[i][j] != '0') {
        if (j % 2) {
          if (!c)
            c = s[i][j];
          else if (s[i][j] != c)
            d = s[i][j];
        } else {
          if (!a)
            a = s[i][j];
          else if (s[i][j] != a)
            b = s[i][j];
        }
      }
  if (c) ch[c] = 1;
  if (d) ch[d] = 1;
  if (a) ch[a] = 1;
  if (b) ch[b] = 1;
  if (!c) find(c);
  if (!b) find(b);
  if (!a) find(a);
  if (!d) find(d);
  if (a == c || a == d || b == c || b == d) return 0;
  for (int j = 0; j < m; j++) {
    if (j % 2 == 0) {
      for (int i = 0; i < n; i++)
        if (s[i][j] != '0') {
          if (s[i][j] != a && s[i][j] != b) return 0;
          if ((i % 2 == 0 && s[i][j] == b) || (i % 2 && s[i][j] == a)) {
            swap(a, b);
            i = n;
          }
        }
      for (int i = 0; i < n; i++)
        if (i % 2)
          ans[i][j] = b;
        else
          ans[i][j] = a;
    } else {
      for (int i = 0; i < n; i++)
        if (s[i][j] != '0') {
          if (s[i][j] != c && s[i][j] != d) return 0;
          if ((i % 2 == 0 && s[i][j] == d) || (i % 2 && s[i][j] == c)) {
            swap(c, d);
            i = n;
          }
        }
      for (int i = 0; i < n; i++)
        if (i % 2)
          ans[i][j] = d;
        else
          ans[i][j] = c;
    }
  }
  if (check()) return 1;
  return 0;
}
void barax() {
  string t[1500];
  for (int i = 0; i < 1001; i++) t[i] = y;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) t[j][n - i - 1] = s[i][j];
  swap(n, m);
  for (int i = 0; i < n; i++) s[i] = t[i];
}
int main() {
  for (int i = 0; i < 1100; i++) y += '0';
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> s[i];
  for (int i = 0; i < 1100; i++) ans[i] = y;
  if (work()) {
    chap();
    return 0;
  }
  barax();
  if (work()) {
    for (int i = m - 1; i >= 0; i--, cout << endl)
      for (int j = 0; j < n; j++) cout << ans[j][i];
    return 0;
  }
  cout << 0 << endl;
  return 0;
}
