#include <bits/stdc++.h>
using namespace std;
long long rdtsc() {
  long long tmp;
  asm("rdtsc" : "=A"(tmp));
  return tmp;
}
const int maxn = 3000;
char s[maxn][maxn], s0[maxn][maxn];
int col[maxn][maxn];
int main() {
  srand(rdtsc());
  int h, w, k;
  while (scanf("%d%d%d", &h, &w, &k) >= 1) {
    for (int i = 0; i < 2 * h - 1; i++) {
      scanf("%s", s[i]);
    }
    int torev = 0;
    if (w < h) {
      torev = 1;
      memcpy(s0, s, sizeof(s0));
      for (int i = 0; i < w; i++)
        for (int j = 0; j < h - 1; j++) s[2 * i][j] = s0[2 * j + 1][i];
      for (int i = 0; i < w - 1; i++)
        for (int j = 0; j < h; j++) s[2 * i + 1][j] = s0[2 * j][i];
      swap(h, w);
    }
    int whole = 0;
    int sum = 0;
    for (int i = 0; i < h; i++) {
      col[i][0] = 0;
      int cnt = 0;
      for (int j = 0; j < w; j++) {
        if (j) {
          col[i][j] = min(k - 1, col[i][j - 1] ^ (s[2 * i][j - 1] == 'N'));
          sum += ((col[i][j] != col[i][j - 1]) == (s[2 * i][j - 1] == 'N'));
          whole++;
        }
        if (i) {
          cnt += ((col[i][j] != col[i - 1][j]) == (s[2 * i - 1][j] == 'N'));
          whole++;
        }
      }
      if (!i) continue;
      if (k > 1 && 2 * cnt < w) {
        cnt = w - cnt;
        for (int j = 0; j < w; j++) col[i][j] ^= 1;
      }
      sum += cnt;
    }
    if (4 * sum >= 3 * whole) {
      printf("YES\n");
      if (torev) {
        for (int i = 0; i < w; i++)
          for (int j = 0; j < h; j++)
            printf("%d%c", col[j][i] + 1, " \n"[j == h - 1]);
      } else {
        for (int i = 0; i < h; i++)
          for (int j = 0; j < w; j++)
            printf("%d%c", col[i][j] + 1, " \n"[j == w - 1]);
      }
    } else {
      printf("NO\n");
      assert(k == 1);
    }
  }
  return 0;
}
