#include <bits/stdc++.h>
using namespace std;
bool vis[1010 * 1010];
priority_queue<pair<int, int> > st;
const int flg[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int n, m, a[1010][1010], fa[1010 * 1010], sz[1010 * 1010], opt[1010 * 1010],
    f[1010][1010], an[1010][1010];
long long k;
int getid(int x, int y) { return (x - 1) * m + y; }
int getfa(int x) {
  if (fa[x] == x) return x;
  return fa[x] = getfa(fa[x]);
}
bool check(int x, int y, int z) {
  if (x < 1 || x > n || y < 1 || y > m) return false;
  if (a[x][y] < z) return false;
  return true;
}
void merge(int x, int y) {
  x = getfa(x), y = getfa(y);
  if (x != y) {
    fa[x] = y;
    sz[y] += sz[x];
  }
}
void heihei(int x, int y, int tot) {
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) an[i][j] = 0;
  an[x][y] = a[x][y];
  int he = 0, ta = 1;
  opt[1] = getid(x, y);
  while (ta != tot) {
    ++he;
    int now = opt[he], x2 = (now - 1) / m + 1, y2 = (now - 1) % m + 1;
    for (int i = 0; i < 4; ++i) {
      int xx = x2 + flg[i][0], yy = y2 + flg[i][1];
      if (check(xx, yy, a[x][y]) && ta != tot && an[xx][yy] == 0) {
        an[xx][yy] = a[x][y];
        opt[++ta] = getid(xx, yy);
      }
    }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) printf("%d ", an[i][j]);
    printf("\n");
  }
}
void solve() {
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j)
      if (k % a[i][j] == 0 && f[i][j] >= k / a[i][j]) {
        printf("YES\n");
        heihei(i, j, k / a[i][j]);
        return;
      }
  printf("NO");
}
int main() {
  scanf("%d%d%I64d", &n, &m, &k);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) scanf("%d", &a[i][j]);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) st.push(make_pair(a[i][j], getid(i, j)));
  for (int i = 1; i <= n * m; ++i) fa[i] = i, sz[i] = 1, vis[i] = true;
  while (!st.empty()) {
    int he = 0, ta = 1;
    opt[1] = st.top().second;
    st.pop();
    vis[opt[1]] = false;
    while (he != ta) {
      ++he;
      int now = opt[he], x = (now - 1) / m + 1, y = (now - 1) % m + 1;
      for (int i = 0; i < 4; ++i)
        if (check(x + flg[i][0], y + flg[i][1], a[x][y])) {
          int tmp = getid(x + flg[i][0], y + flg[i][1]);
          merge(getid(x, y), tmp);
          if (vis[tmp]) {
            vis[tmp] = false, opt[++ta] = tmp;
          }
        }
    }
    f[(opt[1] - 1) / m + 1][(opt[1] - 1) % m + 1] = sz[getfa(opt[1])];
  }
  solve();
  return 0;
}
