#include <bits/stdc++.h>
using namespace std;
int n;
int l[610], r[610];
int f[610][610];
bool dfs(int s, int t) {
  if (f[s][t] < 0) return false;
  if (f[s][t] > 0) return true;
  if (s == t) {
    if (l[s] == 1) {
      f[s][t] = 1;
      return true;
    }
    f[s][t] = -1;
    return false;
  }
  int len = (t - s) * 2 + 1;
  if (l[s] <= len && len <= r[s]) {
    if (dfs(s + 1, t)) {
      f[s][t] = len;
      return true;
    }
  }
  for (int i = (l[s] & 1) ? l[s] : l[s] + 1; i <= r[s] && i <= len; i += 2) {
    if (s + i / 2 < t && dfs(s, s + i / 2) && dfs(s + i / 2 + 1, t)) {
      f[s][t] = i;
      return true;
    }
  }
  f[s][t] = -1;
  return false;
}
void print(int s, int t) {
  if (s > t) return;
  if (f[s][t] == (t - s) * 2 + 1) {
    putchar('(');
    print(s + 1, t);
    putchar(')');
    return;
  }
  putchar('(');
  print(s + 1, s + f[s][t] / 2);
  putchar(')');
  print(s + f[s][t] / 2 + 1, t);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d%d", &l[i], &r[i]);
  if (dfs(1, n))
    print(1, n), puts("");
  else
    puts("IMPOSSIBLE");
  return 0;
}
