#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e3 + 10;
int dx[] = {0, 0, -1, 1};
int dy[] = {-1, 1, 0, 0};
int a[N][N], n, m, cnt = 100000000;
long long k;
vector<int> c;
bool check(int x, int y) { return (x >= 0 && x < n && y >= 0 && y < m); }
bool used[N][N];
queue<pair<int, int> > q;
long long bfs(int x, int y, long long c) {
  while (!q.empty()) q.pop();
  q.push(make_pair(x, y));
  long long cur_ans = 0LL;
  cnt--;
  while (!q.empty()) {
    if (cnt <= 0) return 0;
    int x = q.front().first;
    int y = q.front().second;
    cur_ans++;
    used[x][y] = true;
    q.pop();
    for (int i = 0; i < 4; ++i) {
      int xx = x + dx[i];
      int yy = y + dy[i];
      if (!check(xx, yy)) continue;
      if (used[xx][yy]) continue;
      if (a[xx][yy] < c) continue;
      if (cnt <= 0) return 0;
      used[xx][yy] = true;
      cnt--;
      q.push(make_pair(xx, yy));
    }
  }
  return cur_ans;
}
void clear_used() {
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) used[i][j] = false;
}
int main() {
  scanf("%d%d%I64d", &n, &m, &k);
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < m; ++j) {
      long long x;
      scanf("%I64d", &x);
      a[i][j] = x;
      if (k % x == 0 && (k / x <= n * m)) c.push_back(x);
    }
  sort(c.begin(), c.end());
  c.resize(unique(c.begin(), c.end()) - c.begin());
  long long s = n * m;
  int ans = -1LL;
  pair<int, int> idx;
  for (int i = 0; i < c.size(); ++i) {
    if (s > n * m) break;
    if (s * c[i] >= k) {
      long long cur_s = 0LL;
      pair<int, int> cur_idx = make_pair(0, 0);
      for (int ii = 0; ii < n; ++ii)
        for (int jj = 0; jj < m; ++jj) {
          if (used[ii][jj]) continue;
          if (a[ii][jj] != c[i]) continue;
          long long sub_s = bfs(ii, jj, c[i]);
          if (sub_s > cur_s) {
            cur_s = sub_s;
            cur_idx = make_pair(ii, jj);
          }
        }
      clear_used();
      if (cur_s * c[i] >= k) {
        ans = c[i];
        idx = cur_idx;
        break;
      }
      s = cur_s;
    }
  }
  if (ans == -1) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  cnt = k / ans;
  bfs(idx.first, idx.second, ans);
  long long cnt = k / ans - 1LL;
  for (int i = 0; i < n; ++i, printf("\n"))
    for (int j = 0; j < m; ++j) {
      if (i == idx.first && j == idx.second) {
        printf("%d ", ans);
        continue;
      }
      if (used[i][j] && cnt) {
        printf("%d ", ans);
        cnt--;
      } else
        printf("0 ");
    }
  return 0;
}
