#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f, mod = 1e9 + 7;
const int maxn = 1e3 + 100;
const long double PI = acos(-1.0);
int gcd(int a, int b) { return (a ? gcd(b % a, a) : b); }
long long power(long long a, long long n) {
  long long p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
    }
    n >>= 1;
    a *= a;
  }
  return p;
}
long long power(long long a, long long n, long long mod) {
  long long p = 1;
  while (n > 0) {
    if (n % 2) {
      p = p * a;
      p %= mod;
    }
    n >>= 1;
    a *= a;
    a %= mod;
  }
  return p % mod;
}
int n, m, t;
long long k;
long long a[maxn][maxn];
int flag[maxn][maxn], g[maxn][maxn];
int dx[6] = {0, -1, 0, 1}, dy[6] = {-1, 0, 1, 0};
bool judge(int x, int y, int s, int pu) {
  if (x >= 1 && x <= n && y >= 1 && y <= m && flag[x][y] != s && g[x][y] == 0 &&
      a[x][y] >= pu)
    return true;
  return false;
}
struct veg {
  int x, y;
};
vector<veg> gg[1000010];
map<long long, int> has;
long long sum;
bool dfs(int i, int j, int x, long long d, int s) {
  flag[i][j] = s;
  sum++;
  if (a[i][j] == x) g[i][j] = 1;
  if (sum == d) return true;
  for (int l = 0; l < 4; l++) {
    int xx = dx[l] + i, yy = dy[l] + j;
    if (judge(xx, yy, s, x))
      if (dfs(xx, yy, x, d, s)) return true;
  }
  return false;
}
vector<long long> ss;
int main() {
  while (cin >> n >> m >> k) {
    int cun = 1;
    has.clear();
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++) {
        scanf("%d", &a[i][j]);
        if (a[i][j] != 0 && k % a[i][j] == 0) {
          ss.push_back(a[i][j]);
        }
      }
    sort(ss.begin(), ss.end());
    if (ss.size() == 0) {
      cout << "NO" << endl;
      continue;
    }
    has[ss[0]] = cun++;
    for (int i = 1; i < ss.size(); i++)
      if (ss[i] != ss[i - 1]) has[ss[i]] = cun++;
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= m; j++)
        if (a[i][j] != 0 && k % a[i][j] == 0) {
          veg ve;
          ve.x = i;
          ve.y = j;
          gg[has[a[i][j]]].push_back(ve);
        }
    memset(flag, 0, sizeof(flag));
    memset(g, 0, sizeof(g));
    int ff = -1, p, ans = 1;
    for (int i = 1; i < cun; i++) {
      if (ff != -1) break;
      for (int j = 0; j < gg[i].size(); j++) {
        if (g[gg[i][j].x][gg[i][j].y] == 0) {
          sum = 0;
          if (dfs(gg[i][j].x, gg[i][j].y, a[gg[i][j].x][gg[i][j].y],
                  k / a[gg[i][j].x][gg[i][j].y], ans)) {
            ff = ans;
            p = a[gg[i][j].x][gg[i][j].y];
            break;
          }
        }
        ans++;
      }
    }
    if (ff == -1)
      cout << "NO" << endl;
    else {
      cout << "YES" << endl;
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++)
          if (flag[i][j] == ff)
            cout << p << " ";
          else
            cout << 0 << " ";
        cout << endl;
      }
    }
  }
  return 0;
}
