#include <bits/stdc++.h>
using namespace std;
const int N = 2000;
bool f[N][N], us[N][N];
int pr[N][N], ty[N][N], ll[N], rr[N], n;
bool dp(int l, int r) {
  if (r < l) return 1;
  if (us[l][r]) return f[l][r];
  us[l][r] = 1;
  if ((ll[l] <= 2 * (r - l) + 1) &&
      (2 * (r - l) + 1 <= rr[l] && dp(l + 1, r))) {
    f[l][r] = 1;
    ty[l][r] = 0;
  };
  for (int i = l + 1; i <= r && !f[l][r]; i++) {
    if (dp(l, i - 1) & dp(i, r)) {
      f[l][r] = 1;
      ty[l][r] = 1;
      pr[l][r] = i;
    };
  }
  return f[l][r];
}
string gen(int l, int r) {
  if (r < l) return "";
  if (ty[l][r]) {
    return gen(l, pr[l][r] - 1) + gen(pr[l][r], r);
  } else {
    return "(" + gen(l + 1, r) + ")";
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &ll[i], &rr[i]);
  }
  if (dp(0, n - 1))
    printf("%s\n", gen(0, n - 1).c_str());
  else
    puts("IMPOSSIBLE");
  return 0;
}
