#include <bits/stdc++.h>
using namespace std;
int n, m, k, af, bf;
const int INF = 1000000000, maxn = 2013, mod = 1000000007;
const int dx[] = {0, 0, 1, -1};
const int dy[] = {1, -1, 0, 0};
int che[maxn][maxn];
int ne[maxn][maxn][4];
int one[maxn][maxn][4];
int ans[maxn][maxn];
string z[maxn], v[maxn];
int all = 0, bad = 0;
void tryans(int rev) {
  int bados = 0;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      if (i + 1 < n) bados += (ans[i][j] != ans[i + 1][j]) != ne[i][j][2];
      if (j + 1 < m) bados += (ans[i][j] != ans[i][j + 1]) != ne[i][j][0];
    }
  if (bados * 4 > all) return;
  cout << "YES\n";
  if (rev) {
    for (int i = 0; i < m; ++i, cout << endl)
      for (int j = 0; j < n; ++j) printf("%d ", ans[j][i] + 1);
  } else {
    for (int i = 0; i < n; ++i, cout << endl)
      for (int j = 0; j < m; ++j) printf("%d ", ans[i][j] + 1);
  }
  exit(0);
}
void tryf(int rev = 0) {
  int bados = 0;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) ans[i][j] = 0;
  tryans(rev);
  if (k == 1) {
    cout << "NO\n";
    exit(0);
  }
  for (int i = 0; i < n; ++i) {
    ans[i][0] = 0;
    for (int j = 1; j < m; ++j) ans[i][j] = ans[i][j - 1] ^ ne[i][j - 1][0];
    if (i) {
      int bb = 0;
      for (int j = 0; j < m; ++j)
        bb += (ans[i - 1][j] != ans[i][j]) != (ne[i - 1][j][2]);
      if (bb > m - bb) {
        for (int j = 0; j < m; ++j) ans[i][j] = 1 - ans[i][j];
      }
    }
  }
  tryans(rev);
}
int main() {
  cin >> n >> m >> k;
  string a;
  for (int i = 0; i < 2 * n - 1; ++i) cin >> z[i], v[i] = z[i];
  for (int i = 0; i < 2 * n - 1; ++i) {
    a = z[i];
    all += a.size();
    if ((i & 1) == 0) {
      for (int j = 0; j < a.size(); ++j)
        if (a[j] == 'N') {
          ++bad;
          ne[i / 2][j][0] = 1;
          if (i / 2) ++che[i / 2 - 1][j];
          ++che[i / 2][j];
        }
    } else {
      for (int j = 0; j < a.size(); ++j)
        if (a[j] == 'N') {
          ++bad;
          ne[i / 2][j][2] = 1;
          if (j) ++che[i / 2][j - 1];
          ++che[i / 2][j];
        }
    }
  }
  tryf(0);
  for (int i = 0; i < max(n, m); ++i)
    for (int j = i; j < max(n, m); ++j) {
      swap(che[i][j], che[j][i]);
      swap(ne[i][j][0], ne[j][i][2]);
      if (i != j) swap(ne[i][j][2], ne[j][i][0]);
    }
  swap(n, m);
  tryf(1);
}
