#include <bits/stdc++.h>   using namespace std;   const long long MAXN = 200 + 17, inf = 2e18 + 17;   long long a[MAXN], b[MAXN], n, m, k, t[MAXN][MAXN], np;   void fillA() {     for (int i = 1; i <= m; i++)       for (int j = 0; i - j > 0 && j < n; j++) a[i] = min(t[j + 1][i - j], a[i]);     for (int i = 1; i <= n; i++)       for (int j = 0; i + j <= n && j < m; j++)         a[i + m - 1] = min(a[i + m - 1], t[i + j][m - j]);   }   void fillBackT() {     for (int i = 1; i <= m; i++)       for (int j = 0; i - j > 0 && j < n; j++) t[j + 1][i - j] = a[i];     for (int i = 1; i <= n; i++)       for (int j = 0; i + j <= n && j < m; j++) t[i + j][m - j] = a[i + m - 1];   }   long long count(int x) {     a[x] = 0;     long long dp[MAXN][MAXN] = {};     if (a[1] == 1)       dp[1][1] = 0;     else       dp[1][1] = 1;     for (int i = 2; i <= np; i++)       for (int j = 0; j <= np; j++) {         if (a[i] == 1)           dp[i][j] = dp[i - 1][j + 1];         else if (a[i] == 0)           dp[i][j] = (j > 0 ? dp[i - 1][j - 1] : 0);         else           dp[i][j] =               min(inf, (dp[i - 1][j + 1] + (j > 0 ? dp[i - 1][j - 1] : 0)));       }     return dp[np][0];   }   int main() {     ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);     cin >> n >> m >> k;     for (int i = 1; i <= n; i++)       for (int j = 1; j <= m; j++) cin >> t[i][j];     fill(a, a + MAXN, inf);     fillA();     np = n + m - 1;     iota(b + 1, b + np + 1, 1);     sort(b + 1, b + np + 1, [](int i, int j) { return a[i] < a[j]; });     for (int i = 1; i <= np; i++) {       long long tmp = count(b[i]);       if (tmp >= k)         a[b[i]] = 0;       else {         a[b[i]] = 1;         k -= tmp;       }     }     fillBackT();     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= m; j++) cout << (t[i][j] ?  )  :  ( );       cout << endl;     }     return 0;   }   