#include <bits/stdc++.h>
int interval[605][2];
int cit[605];
int inceput[605];
int maxim[605];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%d %d", &interval[i][0], &interval[i][1]);
  }
  for (int i = 1; i <= n; ++i) {
    cit[i] = 1;
    inceput[i] = 2 * (i - 1) + 1;
    maxim[i] = i;
  }
  for (int i = n; i > 0; --i) {
    while (cit[i] < interval[i][0]) {
      cit[i] += 2;
      maxim[i]++;
    }
  }
  int advr = 0;
  for (int i = n - 1; i >= 1; --i) {
    int val = maxim[i];
    for (int j = i + 1; j <= maxim[i]; ++j) {
      if (val < maxim[j]) val = maxim[j];
    }
    maxim[i] = val;
    if (maxim[i] > n) advr = 1;
  }
  inceput[1] = 1;
  cit[1] = 1 + (maxim[1] - 1) * 2;
  for (int i = 2; i <= n; ++i) {
    int nr = 0;
    for (int j = i - 1; j > 0; --j) {
      if (maxim[j] >= i) ++nr;
    }
    if (nr == 0) {
      inceput[i] = (i - 1) * 2 + 1;
    } else {
      inceput[i] = (i - 1) * 2 + 1 - nr;
    }
    cit[i] = (maxim[i] - i) * 2 + 1;
  }
  if (advr == 0)
    for (int i = 1; i <= n; ++i) {
      if (cit[i] > interval[i][1]) {
        advr = 1;
      }
    }
  if (advr == 0) {
    int j = 1;
    for (int i = 1; i <= 2 * n; ++i) {
      if (inceput[j] == i) {
        printf("(");
        ++j;
      } else {
        printf(")");
      }
    }
  } else {
    printf("IMPOSSIBLE");
  }
  return 0;
}
