#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
inline long long getint() {
  long long _x = 0, _tmp = 1;
  char _tc = getchar();
  while ((_tc < '0' || _tc > '9') && _tc != '-') _tc = getchar();
  if (_tc == '-') _tc = getchar(), _tmp = -1;
  while (_tc >= '0' && _tc <= '9') _x *= 10, _x += (_tc - '0'), _tc = getchar();
  return _x * _tmp;
}
inline long long add(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x += _y;
  return _x >= _mod ? _x - _mod : _x;
}
inline long long sub(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x -= _y;
  return _x < 0 ? _x + _mod : _x;
}
inline long long mul(long long _x, long long _y,
                     long long _mod = 1000000007LL) {
  _x *= _y;
  return _x >= _mod ? _x % _mod : _x;
}
long long mypow(long long _a, long long _x, long long _mod) {
  if (_x == 0) return 1LL;
  long long _ret = mypow(mul(_a, _a, _mod), _x >> 1, _mod);
  if (_x & 1) _ret = mul(_ret, _a, _mod);
  return _ret;
}
long long mymul(long long _a, long long _x, long long _mod) {
  if (_x == 0) return 0LL;
  long long _ret = mymul(add(_a, _a, _mod), _x >> 1, _mod);
  if (_x & 1) _ret = add(_ret, _a, _mod);
  return _ret;
}
inline bool equal(double _x, double _y) {
  return _x > _y - 1e-9 && _x < _y + 1e-9;
}
int __ = 1, _cs;
void build() {}
int h, w, k;
char r[1021][1021], c[1021][1021];
bool right(int i, int j) { return r[i][j] == 'E'; }
bool down(int i, int j) { return c[i][j] == 'E'; }
int tot;
void init() {
  h = getint();
  w = getint();
  k = getint();
  tot = h * (w - 1) + w * (h - 1);
  for (int i = 0; i < h + h - 1; i++)
    if (i % 2)
      scanf("%s", c[i / 2]);
    else
      scanf("%s", r[i / 2]);
}
int ans[1021][1021];
void print() {
  int ok = 0;
  for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++) {
      if (i + 1 < h and (ans[i][j] == ans[i + 1][j]) == down(i, j)) ok++;
      if (j + 1 < w and (ans[i][j] == ans[i][j + 1]) == right(i, j)) ok++;
    }
  if (4 * ok < 3 * tot) return;
  puts("YES");
  for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++)
      printf("%d%c", ans[i][j] + 1, " \n"[j + 1 == w]);
  exit(0);
}
void solve() {
  if (k == 1) {
    print();
    puts("NO");
    exit(0);
  }
  {
    for (int i = 0; i < h; i++) {
      for (int j = 1; j < w; j++) {
        if (right(i, j - 1))
          ans[i][j] = ans[i][j - 1];
        else
          ans[i][j] = 1 - ans[i][j - 1];
      }
      if (!i) continue;
      int ok = 0;
      for (int j = 0; j < w; j++)
        if (down(i - 1, j) == (ans[i - 1][j] == ans[i][j])) ok++;
      if (w - ok > ok)
        for (int j = 0; j < w; j++) ans[i][j] = 1 - ans[i][j];
    }
    print();
  }
  {
    for (int j = 0; j < w; j++) {
      for (int i = 1; i < h; i++) {
        if (down(i - 1, j))
          ans[i][j] = ans[i - 1][j];
        else
          ans[i][j] = 1 - ans[i - 1][j];
      }
      if (!j) continue;
      int ok = 0;
      for (int i = 0; i < h; i++)
        if (right(i, j - 1) == (ans[i][j - 1] == ans[i][j])) ok++;
      if (h - ok > ok)
        for (int i = 0; i < h; i++) ans[i][j] = 1 - ans[i][j];
    }
    print();
  }
  puts("NO");
}
int main() {
  build();
  while (__--) {
    init();
    solve();
  }
}
