#include <bits/stdc++.h>
using namespace std;
const int M = 2000000 + 10;
const int inf = 0x3f3f3f3f;
char s[M];
int ans[M];
int ls;
int prel[M], prer[M];
int sufl[M], sufr[M];
int sa[M], rk[M], h[M];
void da(char *s, int n, int m) {
  static int t1[M], t2[M], c[M];
  int *x = t1, *y = t2, i, j, k, p = 1;
  memset(c, 0, sizeof(c[0]) * m);
  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; p < n; k <<= 1, m = p) {
    for (p = 0, i = n - k; i < n; i++) y[p++] = i;
    for (i = 0; i < n; i++)
      if (sa[i] >= k) y[p++] = sa[i] - k;
    memset(c, 0, sizeof(c[0]) * m);
    for (i = 0; i < n; i++) c[x[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];
    for (swap(x, y), x[sa[0]] = 0, p = i = 1; i < n; i++)
      x[sa[i]] = y[sa[i]] == y[sa[i - 1]] && y[sa[i] + k] == y[sa[i - 1] + k]
                     ? p - 1
                     : p++;
  }
}
void Print(int x) {
  vector<char> st;
  int cnt = 0;
  for (int i = x, j = 0; j < ls; ++i, ++j) {
    if (s[i] == '(')
      st.push_back(s[i]);
    else {
      if (st.size() == 0)
        ++cnt;
      else
        st.pop_back();
    }
  }
  for (int i = 0; i < cnt; ++i) printf("(");
  for (int i = x, j = 0; j < ls; ++i, ++j) {
    printf("%c", s[i]);
  }
  for (int i = 0; i < st.size(); ++i) printf(")");
  puts("");
}
int main() {
  scanf("%s", s);
  ls = strlen(s);
  vector<char> st;
  int cnt = 0;
  for (int i = 0; i < ls; ++i) {
    if (s[i] == '(')
      st.push_back(s[i]);
    else {
      if (st.size() == 0)
        ++cnt;
      else
        st.pop_back();
    }
    prel[i] = cnt, prer[i] = st.size();
  }
  st.clear();
  cnt = 0;
  for (int i = ls - 1; i >= 0; --i) {
    if (s[i] == ')')
      st.push_back(s[i]);
    else {
      if (st.size() == 0)
        ++cnt;
      else
        st.pop_back();
    }
    sufl[i] = st.size(), sufr[i] = cnt;
  }
  ans[0] = ls + sufl[0] + sufr[0];
  int minn = ans[0];
  for (int i = 1; i < ls; ++i) {
    ans[i] = abs(sufr[i] - prel[i - 1]) + ls + sufl[i] + prer[i - 1];
    minn = min(ans[i], minn);
  }
  memcpy(s + ls, s, sizeof(s[0]) * ls);
  s[2 * ls] = 127;
  s[2 * ls + 1] = 0;
  da(s, ls * 2 + 1, 128);
  for (int i = 0; i < 2 * ls; ++i) {
    if (sa[i] < ls && minn == ans[sa[i]]) {
      Print(sa[i]);
      break;
    }
  }
  return 0;
}
