#include <bits/stdc++.h>
using namespace std;
long long sqr(long long x) { return x * x; }
long double sqr(long double x) { return x * x; }
mt19937 Random((int)time(0));
long long rnd(long long x) { return Random() % x; }
const long long INF = (long long)1e9 + 282;
const long long MOD = (long long)1e9 + 7;
const long double PI = acos(-1.0);
const int N = 1010;
int dx[4] = {0, -1, 0, 1};
int dy[4] = {-1, 0, 1, 0};
long long f[N][N];
vector<pair<int, int> > arr;
bool used[N][N], us[N][N];
int pr[N * N], s[N * N];
void init(int n) {
  for (int i = 1; i <= n; i++) {
    pr[i] = i;
    s[i] = 1;
  }
}
int get(int v) {
  if (v == pr[v]) {
    return v;
  }
  return pr[v] = get(pr[v]);
}
bool unite(int u, int v) {
  u = get(u);
  v = get(v);
  if (u == v) {
    return 0;
  }
  if (s[u] < s[v]) {
    swap(u, v);
  }
  pr[v] = u;
  s[u] += s[v];
  return 1;
}
bool cmp(pair<int, int> a, pair<int, int> b) {
  return f[a.first][a.second] < f[b.first][b.second];
}
void ans(pair<int, int> st, long long need, long long val, int n, int m) {
  queue<pair<int, int> > q;
  q.push(st);
  long long cnt = 1;
  us[st.first][st.second] = 1;
  while (cnt < need) {
    auto v = q.front();
    q.pop();
    for (int i = 0; i < 4; i++) {
      if (cnt == need) {
        break;
      }
      if (f[v.first + dy[i]][v.second + dx[i]] >= val &&
          !us[v.first + dy[i]][v.second + dx[i]]) {
        q.push({v.first + dy[i], v.second + dx[i]});
        cnt++;
        us[v.first + dy[i]][v.second + dx[i]] = 1;
      }
    }
  }
  cout << "YES" << endl;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      if (us[i][j]) {
        cout << val << " ";
      } else {
        cout << 0 << " ";
      }
    }
    cout << endl;
  }
}
void $main() {
  int n, m;
  long long k;
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cin >> f[i][j];
      arr.push_back({i, j});
    }
  }
  sort((arr).begin(), (arr).end(), cmp);
  init(N * N - 1);
  for (int i = n * m - 1; i >= 0; i--) {
    int x = arr[i].second, y = arr[i].first;
    used[y][x] = 1;
    for (int j = 0; j < 4; j++) {
      if (used[y + dy[j]][x + dx[j]]) {
        unite(y * N + x, (y + dy[j]) * N + x + dx[j]);
      }
    }
    if (k % f[y][x] == 0) {
      long long cnt = s[get(y * N + x)], cl = k / f[y][x];
      if (cnt >= cl) {
        ans(arr[i], cl, f[y][x], n, m);
        return;
      }
    }
  }
  cout << "NO";
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout.setf(ios_base::fixed, ios_base::floatfield);
  cout.precision(10);
  $main();
}
