a00dff21df2b44559d33c4a1eee46e5fb58a33a9258f7fd36afd1d8953702cb4
// tresc: https://szkopul.edu.pl/problemset/problem/oaJ_FxvI6Sel6L4O3IQlzWuV/site/?key=statement
// OIG XVI (2 etap)
#include <algorithm>
#include <iostream>
const int sizik = 100000 + 7;
long long tab[sizik];
void init_arr() {
for (int i = 0; i < sizik; i++) {
tab[i] = ((long long)i * (i + 1)) / 2;
}
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
int N;
std::cin >> N;
init_arr();
while (N > 0) {
for (int i = sizik - 1; i >= 0; i--) {
long long res = tab[i];
if (N >= res) {
for (int j = 0; j < i; j++) {
std::cout << "()";
}
N -= res;
std::cout << ")";
}
}
}
std::cout << '\n';
return 0;
}