#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000;
char ans[2000];
int l[maxn], r[maxn];
int dp[601][601];
bool check(int id, int len) {
  if (len >= l[id] && r[id] >= len) return true;
  return false;
}
int dfs(int pos, int s, int e) {
  if (dp[s][e] != -1) return dp[s][e];
  if (s == e) {
    if (check(s, 1)) {
      ans[pos] = '(';
      ans[pos + 1] = ')';
      return dp[s][e] = 1;
    } else
      return dp[s][e] = 0;
  }
  for (int i = s; i < e; i++) {
    if (check(s, (i - s) * 2 + 1) && dfs(pos, s, i) &&
        dfs(pos + (i - s + 1) * 2, i + 1, e)) {
      ans[pos] = '(';
      ans[pos + (i - s) * 2 + 1] = ')';
      return dp[s][e] = 1;
    }
  }
  if (check(s, (e - s) * 2 + 1) && dfs(pos + 1, s + 1, e)) {
    ans[pos] = '(';
    ans[pos + (e - s) * 2 + 1] = ')';
    return dp[s][e] = 1;
  }
  return dp[s][e] = 0;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d%d", &l[i], &r[i]);
  memset(dp, -1, sizeof(dp));
  if (dfs(1, 1, n)) {
    ans[2 * n + 1] = '\0';
    printf("%s\n", ans + 1);
  } else
    printf("IMPOSSIBLE\n");
  return 0;
}
