#include <bits/stdc++.h>
struct hay {
  int h, i, j;
  hay(int x, int y, int z) {
    h = x;
    i = y;
    j = z;
  }
};
long long k;
int n, m, a[1005][1005], area[1005][1005], l, ans[1005][1005], lx, ly;
std::pair<int, int> f[1005][1005];
std::vector<hay> b;
std::vector<std::pair<int, int> > c;
bool op, u[1005][1005];
bool cmp(hay x, hay y) { return x.h > y.h; }
std::pair<int, int> find(int x, int y) {
  if (f[x][y] == std::make_pair(x, y)) return std::make_pair(x, y);
  return f[x][y] = find(f[x][y].first, f[x][y].second);
}
void select(int t, int h, int x, int y) {
  c.push_back(std::make_pair(x, y));
  u[x][y] = true;
  for (int i = 0; i < t; i++) {
    int xx = c[i].first, yy = c[i].second;
    ans[xx][yy] = h;
    if (yy && a[xx][yy - 1] >= h && !u[xx][yy - 1]) {
      u[xx][yy - 1] = true;
      c.push_back(std::make_pair(xx, yy - 1));
    }
    if (xx && a[xx - 1][yy] >= h && !u[xx - 1][yy]) {
      u[xx - 1][yy] = true;
      c.push_back(std::make_pair(xx - 1, yy));
    }
    if (yy + 1 < m && a[xx][yy + 1] >= h && !u[xx][yy + 1]) {
      u[xx][yy + 1] = true;
      c.push_back(std::make_pair(xx, yy + 1));
    }
    if (xx + 1 < n && a[xx + 1][yy] >= h && !u[xx + 1][yy]) {
      u[xx + 1][yy] = true;
      c.push_back(std::make_pair(xx + 1, yy));
    }
  }
}
void deploy(int x, int y) {
  area[x][y] = 1;
  std::pair<int, int> tmp, tmp2, tmp4;
  int tmp3;
  if (y && area[x][y - 1]) {
    tmp = find(x, y);
    tmp2 = find(x, y - 1);
    if (tmp != tmp2) {
      tmp3 = area[tmp.first][tmp.second];
      tmp4 = find(tmp2.first, tmp2.second);
      f[tmp.first][tmp.second] = tmp4;
      area[tmp4.first][tmp4.second] += tmp3;
    }
  }
  if (x && area[x - 1][y]) {
    tmp = find(x, y);
    tmp2 = find(x - 1, y);
    if (tmp != tmp2) {
      tmp3 = area[tmp.first][tmp.second];
      tmp4 = find(tmp2.first, tmp2.second);
      f[tmp.first][tmp.second] = tmp4;
      area[tmp4.first][tmp4.second] += tmp3;
    }
  }
  if (y + 1 < m && area[x][y + 1]) {
    tmp = find(x, y);
    tmp2 = find(x, y + 1);
    if (tmp != tmp2) {
      tmp3 = area[tmp.first][tmp.second];
      tmp4 = find(tmp2.first, tmp2.second);
      f[tmp.first][tmp.second] = tmp4;
      area[tmp4.first][tmp4.second] += tmp3;
    }
  }
  if (x + 1 < n && area[x + 1][y]) {
    tmp = find(x, y);
    tmp2 = find(x + 1, y);
    if (tmp != tmp2) {
      tmp3 = area[tmp.first][tmp.second];
      tmp4 = find(tmp2.first, tmp2.second);
      f[tmp.first][tmp.second] = tmp4;
      area[tmp4.first][tmp4.second] += tmp3;
    }
  }
  tmp = find(x, y);
  tmp3 = area[tmp.first][tmp.second];
  if (tmp3 > l) {
    l = tmp3;
    lx = x;
    ly = y;
  }
}
int main() {
  scanf("%d %d %I64d", &n, &m, &k);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      scanf("%d", &a[i][j]);
      b.push_back(hay(a[i][j], i, j));
      f[i][j] = std::make_pair(i, j);
    }
  }
  std::sort(b.begin(), b.end(), cmp);
  for (int i = 0; i < b.size() && !op;) {
    int j = i;
    hay org = b[i];
    while (j < b.size() && b[i].h == b[j].h) j++;
    l = 0;
    for (; i < j; i++) deploy(b[i].i, b[i].j);
    if (k % org.h == 0 && k / org.h <= l) {
      op = true;
      select(k / org.h, org.h, lx, ly);
      printf("YES\n");
      for (int x = 0; x < n; x++)
        for (int y = 0; y < m; y++)
          printf("%d%c", ans[x][y], y == m - 1 ? '\n' : ' ');
    }
  }
  if (!op) printf("NO\n");
  scanf("\n");
  return 0;
}
