#include <bits/stdc++.h>
using namespace std;
int n, m, l, r, T, x, mmh, la, pos;
char a[2000003], c[2000003];
int s[2000003], SS = 0, A, len;
int v[2000003], sa[2000003], q[2000003], ran[2000003], st[2000003], y[2000003],
    P[2000003];
bool bo[2000003];
int read_p, read_ca;
inline int read() {
  read_p = 0;
  read_ca = getchar();
  while (read_ca < '0' || read_ca > '9') read_ca = getchar();
  while (read_ca >= '0' && read_ca <= '9')
    read_p = read_p * 10 + read_ca - 48, read_ca = getchar();
  return read_p;
}
inline void gr(int x) {
  ran[sa[1]] = 1;
  for (register int i = 2; i <= n; i++)
    ran[sa[i]] = ran[sa[i - 1]] + (s[sa[i]] != s[sa[i - 1]] ||
                                   s[P[sa[i] + x]] != s[P[sa[i - 1] + x]]);
  for (int i = 1; i <= n; i++) s[i] = ran[i];
  m = max(ran[sa[n]], m);
}
inline void gv() {
  for (int i = 0; i <= m; i++) v[i] = 0;
  for (int i = 1; i <= n; i++) v[s[i]]++;
  for (int i = 1; i <= m; i++) v[i] += v[i - 1];
}
inline void gsa() {
  m = 2;
  gv();
  for (int i = n; i >= 1; i--) sa[v[s[i]]--] = i;
  gr(0);
  for (int i = 1; i < n; i <<= 1) {
    gv();
    for (int j = 1; j <= n; j++) y[j] = (sa[j] + n - i - 1) % n + 1;
    for (register int j = n; j >= 1; j--) q[v[s[y[j]]]--] = y[j], SS++;
    for (int j = 1; j <= n; j++) sa[j] = q[j];
    gr(i);
    if (ran[sa[n]] == n) return;
  }
}
inline int min(int a, int b) { return a < b ? a : b; }
int main() {
  int i;
  scanf("%s", a + 1);
  n = strlen(a + 1);
  for (i = 1; i <= n; i++)
    a[i] = a[i] == ')', s[i + n] = a[i + n] = s[i] = a[i], P[i] = P[i + n] = i;
  gsa();
  v[0] = 0;
  for (i = 1; i <= n * 2; i++) sa[i], v[i] = v[i - 1] + (a[i] ? -1 : 1);
  int l = 0, r = -1;
  for (i = 1; i <= n * 2; i++) {
    while (l <= r && st[l] < i - n + 1) l++;
    while (l <= r && v[i] <= v[st[r]]) r--;
    st[++r] = i;
    if (i >= n) q[i - n] = v[st[l]];
  }
  mmh = min(v[n], 0);
  for (i = 1; i <= n * 2; i++)
    if (sa[i] <= n) {
      pos = sa[i] - 1;
      if (q[pos] >= v[pos] + mmh) break;
    }
  pos++;
  for (i = pos; i <= n; i++) c[i - pos + 1] = a[i];
  for (i = 1; i < pos; i++) c[n - pos + i + 1] = a[i];
  for (pos = 0, i = 1; i <= n; i++) pos += a[i] ? -1 : 1;
  if (pos < 0)
    for (i = 0; i < -pos; i++) putchar('(');
  for (i = 1; i <= n; i++) putchar(c[i] ? ')' : '(');
  if (pos > 0)
    for (i = 0; i < pos; i++) putchar(')');
}
