#include <bits/stdc++.h>
const int maxn = 300000 + 20;
int cnt_cr = 0;
long long thek[maxn];
int incl[maxn];
int low_k(long long n, int low) {
  for (int i = low; i >= 1; i--) {
    if (thek[i] > n)
      continue;
    else
      return i;
  }
}
void print_l(int n) {
  for (int i = 1; i <= n; i++) {
    printf("()");
  }
}
void print_r(int n, int cnt[]) {
  cnt_cr = 0;
  for (int i = 1; i <= n; i++) {
    printf("(");
    while (cnt[i]) {
      printf("()");
      cnt[i]--;
      cnt_cr++;
    }
  }
  for (int i = 1; i <= n; i++) {
    printf(")");
  }
  cnt_cr += n;
}
int main() {
  long long n, k;
  scanf("%lld %lld", &n, &k);
  for (long long i = 1; i <= maxn; i++) {
    thek[i] = i * (i - 1) / 2;
  }
  if (k > thek[n]) {
    printf("Impossible");
    return 0;
  }
  int m = maxn;
  int low = low_k(k, m);
  m = low;
  k -= thek[low];
  for (int i = 0; i < low + 10; i++) {
    incl[i] = 0;
  }
  low--;
  while (k != 0) {
    if (k >= low) {
      k -= low;
      incl[low]++;
    } else
      low--;
  }
  print_r(m, incl);
  print_l(n - cnt_cr);
  return 0;
}
