#include <bits/stdc++.h>
using namespace std;
int H, W, K;
string C[2010];
int S;
void read();
void soups_on();
void howdy();
void sugar_cube();
int main() {
  read();
  soups_on();
  return 0;
}
void read() {
  cin >> H >> W >> K;
  for (int i = 0; i < 2 * H - 1; ++i) cin >> C[i], S += C[i].length();
}
void soups_on() {
  if (K == 1)
    howdy();
  else
    sugar_cube();
}
void howdy() {
  int cnt = 0;
  for (int i = 0; i < 2 * H - 1; ++i)
    cnt += count(C[i].begin(), C[i].end(), 'E');
  if (4 * cnt >= 3 * S) {
    cout << "YES\n";
    for (int i = 0; i < H; ++i, cout << endl)
      for (int j = 0; j < W; ++j) {
        if (j > 0) cout << " ";
        cout << 1;
      }
  } else
    cout << "NO\n";
}
void sugar_cube() {
  bool is_rotate = H > W;
  static int f[1010][1010];
  string T[2010];
  if (is_rotate) {
    swap(H, W);
    for (int i = 0; i < 2 * H - 1; ++i)
      for (int j = 0; j < (i % 2 ? W : W - 1); ++j)
        T[i] += C[2 * (W - j - 1) - (i % 2 ? 0 : 1)][i / 2];
  } else {
    for (int i = 0; i < 2 * H - 1; ++i) T[i] = C[i];
  }
  for (int i = 0; i < H; ++i) {
    for (int j = 0; j < W; ++j)
      f[i][j] =
          (j == 0 ? 0
                  : (T[2 * i][j - 1] == 'E' ? f[i][j - 1] : 1 - f[i][j - 1]));
    if (i > 0) {
      int cnt = 0;
      for (int j = 0; j < W; ++j) {
        if (T[2 * i - 1][j] == 'E' && f[i][j] == f[i - 1][j]) ++cnt;
        if (T[2 * i - 1][j] == 'N' && f[i][j] != f[i - 1][j]) ++cnt;
      }
      if (2 * cnt < W) {
        for (int j = 0; j < W; ++j) f[i][j] = 1 - f[i][j];
      }
    }
  }
  cout << "YES\n";
  if (is_rotate) {
    for (int i = 0; i < W; ++i, cout << endl)
      for (int j = 0; j < H; ++j) {
        if (j > 0) cout << " ";
        cout << f[j][W - i - 1] + 1;
      }
  } else {
    for (int i = 0; i < H; ++i, cout << endl)
      for (int j = 0; j < W; ++j) {
        if (j > 0) cout << " ";
        cout << f[i][j] + 1;
      }
  }
}
