#include <bits/stdc++.h>
using namespace std;
const int N = 1234;
vector<pair<long long, pair<int, int> > > nu;
long long mz[N][N], num, mx[N * N], ans[N][N], C;
int n, m, pa[N * N], cnt[N * N], dx[4] = {1, 0, -1, 0}, dy[4] = {0, -1, 0, 1};
map<long long, long long> MCsize;
map<long long, pair<int, int> > sv;
void init() {
  for (int i = 0; i < n * m; i++) {
    pa[i] = i;
    cnt[i] = 1;
    mx[i] = mz[i / m][i % m];
  }
}
int _find(int u) {
  if (pa[u] != u)
    return pa[u] = _find(pa[u]);
  else
    return pa[u];
}
void _union(int u, int v) {
  u = _find(u), v = _find(v);
  if (u != v) {
    pa[u] = v;
    cnt[v] += cnt[u];
    cnt[u] = cnt[v];
    mx[u] = min(mx[u], mx[v]);
    mx[v] = mx[u];
  }
}
void dfs(int x, int y, long long v, long long mu) {
  if (C >= mu) return;
  C++;
  ans[x][y] = v;
  for (int i = 0; i < 4; i++) {
    int tx = x + dx[i], ty = y + dy[i];
    if (tx >= 0 && tx < n && ty >= 0 && ty < m && ans[tx][ty] != v &&
        mz[tx][ty] >= v) {
      dfs(tx, ty, v, mu);
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> num;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> mz[i][j];
      nu.push_back(make_pair(mz[i][j], make_pair(i, j)));
    }
  }
  init();
  sort(nu.begin(), nu.end());
  for (int i = nu.size() - 1; i >= 0; i--) {
    for (int k = 0; k < 4; k++) {
      int tx = dx[k] + nu[i].second.first;
      int ty = dy[k] + nu[i].second.second;
      if (tx >= 0 && tx < n && ty >= 0 && ty < m && mz[tx][ty] >= nu[i].first) {
        _union(tx * m + ty, nu[i].second.first * m + nu[i].second.second);
      }
    }
    int u = _find(nu[i].second.first * m + nu[i].second.second);
    if (MCsize[mx[u]] < cnt[u]) {
      MCsize[mx[u]] = (long long)cnt[u];
      sv[mx[u]] = make_pair(nu[i].second.first, nu[i].second.second);
    }
  }
  for (map<long long, long long>::iterator it = MCsize.begin();
       it != MCsize.end(); it++) {
    if (num % (it->first) == 0 && (it->second) >= (num / (it->first))) {
      long long tmp = it->first;
      C = 0;
      dfs(sv[tmp].first, sv[tmp].second, tmp, num / tmp);
      cout << "YES" << endl;
      for (int ii = 0; ii < n; ii++) {
        for (int jj = 0; jj < m; jj++) {
          cout << ans[ii][jj] << ((jj == m - 1) ? '\n' : ' ');
        }
      }
      return 0;
    }
  }
  cout << "NO" << endl;
  return 0;
}
