#include <bits/stdc++.h>
using namespace std;
vector<int> r[1000002];
char c[1000002];
int a[1000002], ls[1000002], lx[1000002], b[1000002], g[1000002], l, p, k, kk,
    s;
int main() {
  scanf("%s", c);
  l = strlen(c);
  k = 0;
  for (int i = (0); i <= (l - 1); i++)
    if (c[i] == '(') a[i] = kk + 1, b[p++] = i, k = 1;
  if (k) kk++, k = 0;
  for (int i = (0); i <= (l - 1); i++)
    if (c[i] == ')') a[i] = kk + 1, b[p++] = i, k = 1;
  if (k) kk++, k = 0;
  for (int j = (0); j <= (20); j++) {
    k = 1 << j;
    if (k >= l) break;
    for (int i = (1); i <= (kk); i++) r[i].clear();
    s = 0;
    for (int i = (0); i <= (l - 1); i++)
      p = (b[i] - k + l) % l, r[a[p]].push_back(p);
    p = 0;
    for (int i = (1); i <= (kk); i++) {
      int sz = r[i].size() - 1;
      g[r[i][0]] = ++s;
      b[p++] = r[i][0];
      for (int ii = (1); ii <= (sz); ii++) {
        int w = r[i][ii];
        b[p++] = w;
        if (a[(w + k) % l] != a[(r[i][ii - 1] + k) % l])
          g[w] = ++s;
        else
          g[w] = s;
      }
    }
    for (int i = (0); i <= (l - 1); i++) a[i] = g[i];
    kk = s;
  }
  a[0] = 0;
  for (int i = (1); i <= (l); i++)
    if (c[i - 1] == '(')
      a[i] = 1;
    else
      a[i] = -1;
  for (int i = (2); i <= (l); i++) a[i] += a[i - 1];
  ls[0] = l;
  lx[l + 1] = l;
  if (a[l] > 0)
    p = 0;
  else
    p = a[l];
  for (int i = (1); i <= (l); i++)
    if (ls[i - 1] < a[i])
      ls[i] = ls[i - 1];
    else
      ls[i] = a[i];
  for (int i = (l); i >= (1); i--)
    if (lx[i + 1] < a[i])
      lx[i] = lx[i + 1];
    else
      lx[i] = a[i];
  for (int i = (0); i <= (l - 1); i++) {
    int ii = b[i] + 1;
    if (lx[ii] - a[ii - 1] >= p && ls[ii - 1] + a[l] - a[ii - 1] >= p) {
      if (a[l] < 0)
        for (int j = (1); j <= (-a[l]); j++) printf("(");
      for (int j = (ii - 1); j <= (l - 1); j++) printf("%c", c[j]);
      for (int j = (0); j <= (ii - 2); j++) printf("%c", c[j]);
      if (a[l] > 0)
        for (int j = (1); j <= (a[l]); j++) printf(")");
      return 0;
    }
  }
}
