#include <bits/stdc++.h>
using namespace std;
long long n, m, k, a[1005][1005], px[1005][1005], py[1005][1005],
    siz[1005][1005], used[1005][1005], ans[1005][1005], K;
vector<pair<long long, pair<long long, long long> > > v;
pair<long long, long long> get(long long x, long long y) {
  if (px[x][y] == x && py[x][y] == y) return {x, y};
  pair<long long, long long> p = get(px[x][y], py[x][y]);
  px[x][y] = p.first;
  py[x][y] = p.second;
  return p;
}
void unite(long long x1, long long eohfweoifhew, long long x2, long long y2) {
  pair<long long, long long> p = get(x1, eohfweoifhew);
  x1 = p.first;
  eohfweoifhew = p.second;
  p = get(x2, y2);
  x2 = p.first;
  y2 = p.second;
  if (x1 == x2 && eohfweoifhew == y2) return;
  if (siz[x1][eohfweoifhew] > siz[x2][y2]) {
    swap(x1, x2);
    swap(eohfweoifhew, y2);
  }
  px[x1][eohfweoifhew] = x2;
  py[x1][eohfweoifhew] = y2;
  siz[x2][y2] += siz[x1][eohfweoifhew];
}
void dfs(long long x, long long y, long long val) {
  used[x][y] = 0;
  if (K == 0) return;
  ans[x][y] = val;
  K--;
  if (x > 0 && used[x - 1][y] == 1) dfs(x - 1, y, val);
  if (x < n - 1 && used[x + 1][y] == 1) dfs(x + 1, y, val);
  if (y > 0 && used[x][y - 1] == 1) dfs(x, y - 1, val);
  if (y < m - 1 && used[x][y + 1] == 1) dfs(x, y + 1, val);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  for (long long i = 0; i < n; i++)
    for (long long j = 0; j < m; j++) {
      cin >> a[i][j];
      v.push_back({a[i][j], {i, j}});
      px[i][j] = i;
      py[i][j] = j;
      siz[i][j] = 1;
    }
  sort(v.rbegin(), v.rend());
  for (auto to : v) {
    long long x = to.first;
    long long y = to.second.first;
    long long z = to.second.second;
    used[y][z] = 1;
    if (y > 0 && used[y - 1][z] == 1) unite(y, z, y - 1, z);
    if (z > 0 && used[y][z - 1] == 1) unite(y, z, y, z - 1);
    if (y < n - 1 && used[y + 1][z] == 1) unite(y, z, y + 1, z);
    if (z < m - 1 && used[y][z + 1] == 1) {
      unite(y, z, y, z + 1);
    }
    if (siz[get(y, z).first][get(y, z).second] >= k / x && k % x == 0) {
      cout << "YES\n";
      K = k / x;
      dfs(y, z, x);
      for (long long i = 0; i < n; i++) {
        for (long long j = 0; j < m; j++) cout << ans[i][j] << ' ';
        cout << "\n";
      }
      return 0;
    }
  }
  cout << "NO";
}
