#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2000010;
int N, OOP[MAXN], OP[MAXN], FS[MAXN], FMN[MAXN], BS[MAXN], BMN[MAXN];
string B;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cin >> B;
  N = ((int)B.size());
  int open = 0, close = 0;
  for (int i = 0; i < N; i++) {
    if (B[i] == '(') {
      ++open;
    } else {
      ++close;
    }
    if (i > 0) {
      FS[i] = FS[i - 1];
    }
    if (B[i] == '(') {
      ++FS[i];
    } else {
      --FS[i];
    }
    FMN[i] = FS[i];
    if (i > 0) {
      FMN[i] = min(FMN[i - 1], FMN[i]);
    }
  }
  for (int i = N - 1; i >= 0; i--) {
    BS[i] = BS[i + 1];
    BMN[i] = BMN[i + 1];
    if (B[i] == '(') {
      ++BS[i];
      ++BMN[i];
    } else {
      --BS[i];
      BMN[i] = min(BMN[i] - 1, -1);
    }
  }
  B += B;
  for (int i = ((int)B.size()) - 1; i >= 0; i--) {
    OP[i] = OP[i + 1];
    if (B[i] == '(') {
      ++OP[i];
    } else {
      OP[i] = 0;
    }
  }
  int rot = -1;
  for (int i = 0; i < N;) {
    int fsum = 0, fmin = 0;
    if (i > 0) {
      fsum = FS[i - 1];
      fmin = FMN[i - 1];
    }
    int bsum = BS[i];
    int bmin = BMN[i];
    if (open > close) {
      if (bsum + fmin < 0 || bmin < 0) {
        ++i;
        continue;
      }
    } else if (open < close) {
      if (bsum + close - open + fmin < 0 || bmin + close - open < 0) {
        ++i;
        continue;
      }
    } else {
      if (bsum + fmin < 0 || bmin < 0) {
        ++i;
        continue;
      }
    }
    if (rot == -1) {
      rot = i;
      ++i;
      continue;
    }
    if (OP[i] > OP[rot]) {
      rot = i;
      ++i;
    } else if (OP[i] == OP[rot]) {
      bool v = false;
      for (int j = 1; rot + j < i; j++) {
        if (OP[rot + j] < OP[i + j]) {
          rot = i;
          i += j;
          v = true;
          break;
        } else if (OP[rot + j] > OP[i + j]) {
          i += j;
          v = true;
          break;
        }
      }
      if (!v) {
        i += i - rot;
      }
    } else {
      ++i;
    }
  }
  if (open > close) {
    for (int i = rot; i < N; i++) {
      cout << B[i];
    }
    for (int i = 0; i < rot; i++) {
      cout << B[i];
    }
    for (int i = 0; i < open - close; i++) {
      cout << ')';
    }
  } else if (open < close) {
    for (int i = 0; i < close - open; i++) {
      cout << '(';
    }
    for (int i = rot; i < N; i++) {
      cout << B[i];
    }
    for (int i = 0; i < rot; i++) {
      cout << B[i];
    }
  } else {
    for (int i = rot; i < N; i++) {
      cout << B[i];
    }
    for (int i = 0; i < rot; i++) {
      cout << B[i];
    }
  }
  cout << '\n';
  return 0;
}
