#include <bits/stdc++.h>
using namespace std;
const int N = 605;
int n, L[N], R[N];
int dp[N][N], pre[N][N];
int solve(int l, int r) {
  if (dp[l][r] != -1) return dp[l][r];
  if (l > r) return 1;
  int &res = dp[l][r];
  if (l == r) {
    if (L[l] != 1) return res = 0;
    pre[l][r] = 1;
    return res = 1;
  }
  res = 0;
  for (int i = L[l]; i <= R[l]; ++i) {
    if (i % 2 == 0) continue;
    if (i + 1 > (r - l + 1) * 2) break;
    int cnt = (i - 1) / 2;
    if (solve(l + 1, l + cnt) && solve(l + cnt + 1, r)) {
      pre[l][r] = i;
      res = 1;
      break;
    }
  }
  return res;
}
char ans[1205];
void Back(int p, int l, int r) {
  if (l > r) return;
  ans[p] = '(';
  ans[p + pre[l][r]] = ')';
  int cnt = (pre[l][r] - 1) / 2;
  Back(p + 1, l + 1, l + cnt);
  Back(p + pre[l][r] + 1, l + cnt + 1, r);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%d%d", L + i, R + i);
  memset(dp, -1, sizeof(dp));
  if (solve(1, n)) {
    Back(0, 1, n);
    ans[2 * n] = 0;
    puts(ans);
  } else
    puts("IMPOSSIBLE");
  return 0;
}
