OIG XVI - naw

// 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;
}