#include <bits/stdc++.h>
using namespace std;
const long long N = 600 + 10;
stack<long long> node;
char ss[N << 1];
long long l[N], r[N], idx[N];
int main() {
  long long n, cnt = 0;
  scanf("%lld", &n);
  for (long long i = 0; i < n; ++i) {
    scanf("%lld%lld", l + i, r + i);
    node.push(i), idx[i] = cnt;
    ss[cnt++] = '(';
    while (!node.empty()) {
      long long x = node.top();
      if (fabs(cnt - idx[x]) >= l[x] && fabs(cnt - idx[x]) <= r[x]) {
        ss[cnt++] = ')', node.pop();
      } else
        break;
    }
  }
  if (node.empty())
    puts(ss);
  else
    puts("IMPOSSIBLE");
  return 0;
}
