#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 5;
const int M = N * N;
const int INF = 0x3f3f3f3f;
int n, m, b[N][N], vis[N][N], a[N][N];
long long k;
pair<int, pair<int, int> > num[M];
vector<pair<int, int> > g[M];
int f[M], sz[M];
int fa(int x) { return x == f[x] ? x : f[x] = fa(f[x]); }
void Merge(int u, int v) {
  u = fa(u);
  v = fa(v);
  if (u == v) return;
  f[u] = v;
  sz[v] += sz[u];
}
int id(int x, int y) { return (x - 1) * m + y; }
int dx[4] = {0, 0, -1, 1};
int dy[4] = {1, -1, 0, 0};
bool ing(int x, int y) { return x >= 1 && x <= n && y >= 1 && y <= m; }
int cnt;
void dfs(int x, int y, int base) {
  if (!cnt) return;
  if (vis[x][y]) return;
  if (a[x][y] < base) return;
  vis[x][y] = 1;
  cnt--;
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i];
    int ny = y + dy[i];
    if (!ing(nx, ny)) continue;
    dfs(nx, ny, base);
  }
}
pair<int, int> check(int pos) {
  for (int i = 0; i < g[pos].size(); i++) {
    int x = g[pos][i].first;
    int y = g[pos][i].second;
    for (int j = 0; j < 4; j++) {
      int nx = x + dx[j];
      int ny = y + dy[j];
      if (!ing(nx, ny) || a[nx][ny] < a[x][y]) continue;
      Merge(id(x, y), id(nx, ny));
    }
  }
  long long base = num[pos].first;
  if (k % base || k / base > n * m) return make_pair(-1, -1);
  int cnt = k / base;
  for (int i = 0; i < g[pos].size(); i++) {
    int x = g[pos][i].first;
    int y = g[pos][i].second;
    if (sz[fa(id(x, y))] >= cnt) return g[pos][i];
  }
  return make_pair(-1, -1);
}
int main() {
  scanf("%d%d%I64d", &n, &m, &k);
  int tot1 = 0;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      scanf("%d", &a[i][j]), num[tot1++] = make_pair(a[i][j], make_pair(i, j)),
                             f[id(i, j)] = id(i, j), sz[id(i, j)] = 1;
  sort(num, num + tot1);
  int tot = 0;
  g[0].push_back(num[0].second);
  for (int i = 1; i < tot1; i++) {
    if (num[i].first == num[i - 1].first)
      g[tot].push_back(num[i].second);
    else
      g[++tot].push_back(num[i].second), num[tot] = num[i];
  }
  for (int i = tot; i >= 0; i--) {
    pair<int, int> res = check(i);
    if (res.first == -1) continue;
    cnt = k / num[i].first;
    dfs(res.first, res.second, num[i].first);
    puts("YES");
    for (int j = 1; j <= n; j++) {
      for (int t = 1; t <= m; t++) {
        if (vis[j][t])
          printf("%d ", num[i].first);
        else
          printf("0 ");
      }
      printf("\n");
    }
    return 0;
  }
  cout << "NO";
  return 0;
}
