#include <bits/stdc++.h>
using namespace std;
const int MAXN = 205;
long long int dp[MAXN][MAXN];
char brack[MAXN];
long long int k;
long long int cal(int x, int y) {
  if (y < 0 || y > x) return 0;
  if (!x) return !y;
  if (dp[x][y] != -1) return dp[x][y];
  if (brack[x] == '(')
    return dp[x][y] = cal(x - 1, y - 1);
  else if (brack[x] == ')')
    return dp[x][y] = cal(x - 1, y + 1);
  else
    return dp[x][y] = min(cal(x - 1, y + 1) + cal(x - 1, y - 1), k + 2);
}
inline void resetDp() { memset(dp, -1, sizeof dp); }
vector<pair<int, int> > prior;
int main() {
  int n, m;
  cin >> n >> m >> k;
  k--;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      int x;
      cin >> x;
      prior.push_back(make_pair(x, i + j + 1));
    }
  sort(prior.begin(), prior.end());
  for (int i = 0; i < prior.size(); i++) {
    int x = prior[i].second;
    if (brack[x]) continue;
    brack[x] = '(';
    resetDp();
    long long int t = cal(n + m - 1, 0);
    if (k - t >= 0) {
      k -= t;
      brack[x] = ')';
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << brack[i + j + 1];
    cout << endl;
  }
  return 0;
}
