#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
int main() {
  long long n, k;
  while (~scanf("%lld%lld", &n, &k)) {
    long long f = (n * (n - 1)) / 2;
    if (f < k) {
      puts("Impossible");
      continue;
    }
    string ans = "";
    long long sum[300100];
    long long a[300100];
    memset(sum, 0, sizeof(sum));
    a[0] = 0;
    for (int i = 1; i <= n; i++) {
      sum[i] = sum[i - 1] + i;
      a[i] = i;
    }
    int fir = upper_bound(sum, sum + n + 1, k) - sum - 1;
    for (int i = 0; i <= fir; i++) {
      ans += '(';
    }
    ans += ')';
    k -= sum[fir];
    int zuo = fir + 1;
    int you = 1;
    int all = fir + 1;
    while (k) {
      int now = upper_bound(a, a + n + 1, k) - a - 1;
      for (int i = 0; i < fir - now; i++) {
        ans += ')';
      }
      you += (fir - now);
      ans += "()";
      all++;
      k -= now;
    }
    for (int i = 0; i < zuo - you; i++) {
      ans += ')';
    }
    for (int i = 0; i < n - all; i++) {
      ans += "()";
    }
    zuo = 0;
    you = 0;
    for (int i = 0; i < ans.size(); i++) {
      if (ans[i] == '(')
        zuo++;
      else
        you++;
    }
    cout << ans << endl;
  }
  return 0;
}
