#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 5;
const int inf = 0x3f3f3f3f;
const int mod = 1e9 + 7;
char s[maxn];
int sa[maxn], rk[maxn], tp[maxn], tax[maxn];
int sum[maxn], mn[maxn], que[maxn];
int n, p1, p2;
void rsort(int n, int m) {
  for (int i = 0; i <= m; ++i) tax[i] = 0;
  for (int i = 1; i <= n; ++i) ++tax[rk[tp[i]]];
  for (int i = 1; i <= m; ++i) tax[i] += tax[i - 1];
  for (int i = n; i >= 1; --i) sa[tax[rk[tp[i]]]--] = tp[i];
}
inline int cmp(int x, int y, int len, int n) {
  return tp[x] == tp[y] && x + len <= n && y + len <= n &&
         tp[x + len] == tp[y + len];
}
void da(int n, int m) {
  for (int i = 1; i <= n; ++i) tp[i] = i, rk[i] = s[i];
  rsort(n, m);
  for (int len = 1, p = 0; p < n && len < n; len <<= 1, m = p) {
    p = 0;
    for (int i = 1; i <= n; ++i) tp[++p] = (sa[i] - len - 1 + n) % n + 1;
    rsort(n, m);
    for (int i = 1; i <= n; ++i) tp[i] = tp[i + n] = rk[i];
    rk[sa[1]] = p = 1;
    for (int i = 2; i <= n; ++i)
      rk[sa[i]] = cmp(sa[i - 1], sa[i], len, 2 * n) ? p : ++p;
  }
}
int main() {
  scanf("%s", s + 1);
  n = strlen(s + 1);
  for (int i = 1; i <= n; ++i) s[i + n] = s[i];
  da(n, 256);
  int tn = n;
  n <<= 1;
  for (int i = 1; i <= n; ++i) {
    sum[i] = sum[i - 1] + (s[i] == '(' ? 1 : -1);
  }
  p1 = 1, p2 = 0;
  for (int i = 1; i <= n; ++i) {
    while (p1 <= p2 && sum[que[p2]] >= sum[i]) --p2;
    que[++p2] = i;
    while (i - que[p1] + 1 > tn) ++p1;
    if (i >= tn) mn[i - tn + 1] = sum[que[p1]] - sum[i - tn];
  }
  int x = inf, y;
  for (int i = 1; i <= tn; ++i) {
    mn[i] = mn[i] >= 0 ? 0 : -mn[i];
    x = min(x, mn[i]);
  }
  int p = 0;
  y = x + sum[tn];
  for (int i = 1; i <= tn; ++i) {
    if (mn[sa[i]] == x) {
      p = sa[i];
      break;
    }
  }
  while (x--) putchar('(');
  s[p + tn] = 0;
  printf("%s", s + p);
  while (y--) putchar(')');
  return 0;
}
