#include <bits/stdc++.h>
using namespace std;
const long long maxF = (long long)1e9 * 1e9;
const int maxn = 100, maxm = 100, maxlen = maxn + maxm + 1;
int n, m, len, map[maxn + 5][maxm + 5], pri[maxlen], cir[maxlen];
long long dp[maxlen][(maxlen >> 1) + 1], k;
long long cal() {
  memset(dp, 0, sizeof(dp));
  dp[0][1] = 1;
  int up = len >> 1;
  for (int p = 1; p < len; p++)
    for (int d = 0; d <= up; d++) {
      if (cir[p] != 1 && d < up) dp[p][d] += dp[p - 1][d + 1];
      if (cir[p] != -1 && d > 0) dp[p][d] += dp[p - 1][d - 1];
      if (dp[p][d] >= maxF) dp[p][d] = maxF;
    }
  return dp[len - 1][0];
}
int main() {
  cin >> n >> m >> k;
  memset(pri, -1, sizeof(pri));
  for (int i = 0, t; i < n; i++)
    for (int j = 0; j < m; j++) {
      cin >> t;
      pri[i + j] = pri[i + j] == -1 ? t : min(pri[i + j], t);
    }
  len = n + m - 1;
  memset(cir, 0, sizeof(cir));
  cir[0] = 1;
  cir[len - 1] = -1;
  for (int t = 1; t < len - 1; t++) {
    int pos, minPri = 100000000;
    for (int p = 1; p < len - 1; p++)
      if (cir[p] == 0 && minPri > pri[p]) pos = p, minPri = pri[p];
    cir[pos] = 1;
    long long s = cal();
    if (k > s) k -= s, cir[pos] = -1;
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << (cir[i + j] == 1 ? "(" : ")");
    cout << endl;
  }
  return 0;
}
