#include <bits/stdc++.h>
using namespace std;
const int N = 600 + 10;
int l[N], r[N], pos[N], sz = 0;
char ans[N << 1];
stack<int> st;
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", l + i, r + i);
    st.push(i);
    pos[i] = sz;
    ans[sz++] = '(';
    while (!st.empty() && pos[st.top()] + l[st.top()] <= sz) {
      if (pos[st.top()] + r[st.top()] < sz) {
        printf("IMPOSSIBLE\n");
        return 0;
      }
      st.pop();
      ans[sz++] = ')';
    }
  }
  if (!st.empty())
    printf("IMPOSSIBLE\n");
  else
    for (int i = 0; i < sz; i++) printf("%c", ans[i]);
  return 0;
}
