#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000,100000000")
using namespace std;
const long long inf = 1e18 + 7;
const long long mod = 1e9 + 7;
const double eps = 1e-9;
const double PI = 2 * acos(0.0);
const double E = 2.71828;
char x[1005][1005];
char y[1005][1005];
long long ans[1005][1005];
long long cnt = 0, tot = 0;
long long a = 0, b = 0;
int main(void) {
  long long h, w, k;
  cin >> h >> w >> k;
  scanf("\n");
  for (long long(i) = 0; (i) < (long long)(2 * h - 1); (i)++) {
    if (~i & 1)
      gets(x[i / 2]);
    else
      gets(y[i / 2]);
  }
  if (k == 1) {
    for (long long(i) = 0; (i) < (long long)(h); (i)++)
      for (long long(j) = 0; (j) < (long long)(w - 1); (j)++)
        cnt += (x[i][j] == 'E');
    for (long long(i) = 0; (i) < (long long)(h - 1); (i)++)
      for (long long(j) = 0; (j) < (long long)(w); (j)++)
        cnt += (y[i][j] == 'E');
    tot = h * (w - 1) + w * (h - 1);
    if (tot * 3 <= cnt * 4) {
      puts("YES");
      for (long long(i) = 0; (i) < (long long)(h); (i)++) {
        for (long long(j) = 0; (j) < (long long)(w); (j)++)
          cout << ans[i][j] + 1 << " ";
        cout << endl;
      }
    } else
      puts("NO");
    exit(0);
  }
  puts("YES");
  if (h * (w - 1) >= w * (h - 1)) {
    for (long long(i) = 0; (i) < (long long)(h); (i)++) {
      ans[i][0] = 0;
      for (long long(j) = 0; (j) < (long long)(w - 1); (j)++)
        if (x[i][j] == 'E')
          ans[i][j + 1] = ans[i][j];
        else
          ans[i][j + 1] = (ans[i][j] ^ 1);
      a = b = 0;
      if (i > 0) {
        for (long long(j) = 0; (j) < (long long)(w); (j)++)
          if (y[i - 1][j] == 'E' && ans[i - 1][j] != ans[i][j])
            b++;
          else if (y[i - 1][j] == 'N' && ans[i - 1][j] == ans[i][j])
            b++;
          else
            a++;
        if (a < b)
          for (long long(j) = 0; (j) < (long long)(w); (j)++) ans[i][j] ^= 1;
      }
    }
  } else {
    for (long long(j) = 0; (j) < (long long)(w); (j)++) {
      ans[0][j] = 0;
      for (long long(i) = 0; (i) < (long long)(h - 1); (i)++)
        if (y[i][j] == 'E')
          ans[i + 1][j] = ans[i][j];
        else
          ans[i + 1][j] = (ans[i][j] ^ 1);
      a = b = 0;
      if (j > 0) {
        for (long long(i) = 0; (i) < (long long)(h); (i)++)
          if (x[i][j - 1] == 'E' && ans[i][j - 1] != ans[i][j])
            b++;
          else if (x[i][j - 1] == 'N' && ans[i][j - 1] == ans[i][j])
            b++;
          else
            a++;
        if (a < b)
          for (long long(i) = 0; (i) < (long long)(h); (i)++) ans[i][j] ^= 1;
      }
    }
  }
  for (long long(i) = 0; (i) < (long long)(h); (i)++) {
    for (long long(j) = 0; (j) < (long long)(w); (j)++)
      cout << ans[i][j] + 1 << " ";
    cout << endl;
  }
  return 0;
}
