#include <bits/stdc++.h>
using namespace std;
const int maxn = 6000005;
int s[maxn];
int sa[maxn], t1[maxn], t2[maxn], c[maxn], n;
int sum[maxn];
int low[maxn];
int deq[maxn];
void build_sa(int *s, int n, int m) {
  int i, k, p, a1, a2, *x = t1, *y = t2;
  memset(c, 0, m << 2);
  for (i = 0; i < n; ++i) ++c[x[i] = s[i]];
  for (i = 1; i < m; ++i) c[i] += c[i - 1];
  for (i = n - 1; i >= 0; --i) sa[--c[x[i]]] = i;
  for (k = 1; k < n; k <<= 1) {
    p = 0;
    for (i = 0; i < n; ++i) y[p++] = (sa[i] + n - k) % n;
    memset(c, 0, m << 2);
    for (i = 0; i < n; ++i) ++c[x[y[i]]];
    for (i = 1; i < m; ++i) c[i] += c[i - 1];
    for (i = n - 1; i >= 0; --i) sa[--c[x[y[i]]]] = y[i];
    swap(x, y), p = 1, x[sa[0]] = 0;
    for (i = 1; i < n; ++i) {
      a1 = y[(sa[i - 1] + k) % n];
      a2 = y[(sa[i] + k) % n];
      x[sa[i]] = (a1 == a2 && y[sa[i - 1]] == y[sa[i]]) ? p - 1 : p++;
    }
    if (p >= n) break;
    m = p;
  }
}
char res[maxn], tot;
int main() {
  char c;
  while (c = getchar(), ~c && c != '\n') s[n++] = (c == '(' ? 1 : 2);
  for (int i = n; i < n + n; i++) s[i] = s[i - n];
  int m = n;
  build_sa(s, m, 3);
  n <<= 1;
  sum[0] = (s[0] == 1 ? 1 : -1);
  for (int i = 1; i < n; i++) sum[i] = sum[i - 1] + (s[i] == 1 ? 1 : -1);
  int pos = 0;
  int st = 0, ed = 0;
  for (int i = 0; i < n; i++) {
    while (st < ed && deq[st] <= i - m) st++;
    while (st < ed && sum[i] <= sum[deq[ed - 1]]) ed--;
    deq[ed++] = i;
    if (i >= m - 1) low[i - m - 1] = sum[deq[st]];
  }
  if (sum[m - 1] >= 0) {
    for (int i = 0; i < m; i++) {
      if (sa[i] >= m) continue;
      if (sa[i] && low[sa[i]] - sum[sa[i] - 1] >= 0) {
        pos = sa[i];
        break;
      }
      if (!sa[i] && low[sa[i]] >= 0) {
        pos = sa[i];
        break;
      }
    }
  } else {
    for (int i = 0; i < m; i++) {
      if (sa[i] >= m) continue;
      if (sa[i] && low[sa[i]] - sum[sa[i] - 1] - sum[m - 1] >= 0) {
        pos = sa[i];
        break;
      }
      if (!sa[i] && low[sa[i]] - sum[m - 1] >= 0) {
        pos = sa[i];
        break;
      }
    }
  }
  if (sum[m - 1] < 0) {
    for (int i = 0; i < -sum[m - 1]; i++) putchar('(');
  }
  for (int i = 0; i < m; i++) {
    if (s[pos + i] == 1)
      putchar('(');
    else
      putchar(')');
  }
  if (sum[m - 1] > 0) {
    for (int i = 0; i < sum[m - 1]; i++) putchar(')');
  }
  puts("");
  return 0;
}
