#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
const int MAXN = 1000001;
vector<int> lst[MAXN];
int bestsize = 0;
int bestind = -1;
int parent[MAXN];
void make_set(int v) {
  lst[v] = vector<int>(1, v);
  parent[v] = v;
  if (bestsize == 0) {
    bestsize = 1;
    bestind = v;
  }
}
int find_set(int v) { return parent[v]; }
void union_sets(int a, int b) {
  a = find_set(a);
  b = find_set(b);
  if (a != b) {
    if (lst[a].size() < lst[b].size()) swap(a, b);
    while (!lst[b].empty()) {
      int v = lst[b].back();
      lst[b].pop_back();
      parent[v] = a;
      lst[a].push_back(v);
    }
    if (lst[a].size() > bestsize) {
      bestsize = lst[a].size();
      bestind = a;
    }
  }
}
int main() {
  int n, m;
  long long k;
  long long ans = 0;
  scanf("%d %d %lld", &n, &m, &k);
  std::vector<std::vector<int>> a(n, std::vector<int>(m, 0));
  vector<pair<int, std::pair<int, int>>> stog;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      scanf("%d", &a[i][j]);
      stog.push_back(make_pair(a[i][j], make_pair(i, j)));
    }
  sort((stog).begin(), (stog).end());
  reverse((stog).begin(), (stog).end());
  int cur = 0;
  int N = n * m;
  while (cur < N) {
    int add = stog[cur].first;
    std::pair<int, int> to = stog[cur].second;
    make_set(to.first * 1000 + to.second);
    int curr = cur + 1;
    while ((curr < N) && (stog[curr].first == add)) {
      std::pair<int, int> to = stog[curr].second;
      make_set(to.first * 1000 + to.second);
      curr++;
    }
    map<int, int> blessed;
    for (int ax = cur; ax < curr; ax++) {
      to = stog[ax].second;
      int x = to.first;
      int y = to.second;
      int ind = 1000 * x + y;
      if (x > 0)
        if (a[x - 1][y] >= add) union_sets(ind, ind - 1000);
      if (x < n - 1)
        if (a[x + 1][y] >= add) union_sets(ind, ind + 1000);
      if (y > 0)
        if (a[x][y - 1] >= add) union_sets(ind, ind - 1);
      if (y < m - 1)
        if (a[x][y + 1] >= add) union_sets(ind, ind + 1);
      blessed[find_set(ind)] = 1;
    }
    long long test = add;
    if (k % test == 0) {
      for (int star = cur; star < curr; star++) {
        std::pair<int, int> to = stog[star].second;
        int ind = to.first * 1000 + to.second;
        int vv = find_set(ind);
        int startstog = ind;
        if (lst[vv].size() >= k / test) {
          std::vector<int> used(1000000, 0);
          vector<int> dfs;
          bestind = find_set(startstog);
          dfs.push_back(startstog);
          used[startstog] = 1;
          int s = 1;
          while (s < k / test) {
            int past = dfs.back();
            int x = past / 1000;
            int y = past % 1000;
            dfs.pop_back();
            std::vector<int> toadd;
            if (x > 0)
              if (a[x - 1][y] >= add)
                if (find_set(past - 1000) == bestind)
                  if (used[past - 1000] == 0) toadd.push_back(past - 1000);
            if (x < n - 1)
              if (a[x + 1][y] >= add)
                if (find_set(past + 1000) == bestind)
                  if (used[past + 1000] == 0) toadd.push_back(past + 1000);
            if (y > 0)
              if (a[x][y - 1] >= add)
                if (find_set(past - 1) == bestind)
                  if (used[past - 1] == 0) toadd.push_back(past - 1);
            if (y < m - 1)
              if (a[x][y + 1] >= add)
                if (find_set(past + 1) == bestind)
                  if (used[past + 1] == 0) toadd.push_back(past + 1);
            while ((s < k / test) && (toadd.size() > 0)) {
              used[toadd.back()] = 1;
              s++;
              dfs.push_back(toadd.back());
              toadd.pop_back();
            }
          }
          printf("YES\n");
          for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
              if (used[1000 * i + j])
                printf("%d ", add);
              else
                printf("0 ");
            }
            printf("\n");
          }
          return 0;
        }
      }
    }
    cur = curr;
  }
  cout << "NO";
}
