#include <iostream>
#include <string>
int main() {
const int N = 6;
std::string str;
int opens = 0, closes = 0;
do {
for (;opens < N; ++opens) {
str += '(';
}
for (;closes < N; ++closes) {
str += ')';
}
std::cout << str << std::endl;
// find the open to swap
while(str.size() > 0) {
char c = str.back();
str.pop_back();
if (c==')') {
--closes;
} else {
--opens;
if (opens > closes) {
str += ')';
++closes;
break;
}
}
}
} while (!str.empty());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKaW50IG1haW4oKSB7Cgljb25zdCBpbnQgTiA9IDY7CglzdGQ6OnN0cmluZyBzdHI7CglpbnQgb3BlbnMgPSAwLCBjbG9zZXMgPSAwOwoJZG8gewoJCWZvciAoO29wZW5zIDwgTjsgKytvcGVucykgewoJCQlzdHIgKz0gJygnOwoJCX0KCQlmb3IgKDtjbG9zZXMgPCBOOyArK2Nsb3NlcykgewoJCQlzdHIgKz0gJyknOwoJCX0KCQlzdGQ6OmNvdXQgPDwgc3RyIDw8IHN0ZDo6ZW5kbDsKCQkKCQkvLyBmaW5kIHRoZSBvcGVuIHRvIHN3YXAKCQl3aGlsZShzdHIuc2l6ZSgpID4gMCkgewoJCQljaGFyIGMgPSBzdHIuYmFjaygpOwoJCQlzdHIucG9wX2JhY2soKTsKCQkJaWYgKGM9PScpJykgewoJCQkJLS1jbG9zZXM7CgkJCX0gZWxzZSB7CgkJCQktLW9wZW5zOwoJCQkJaWYgKG9wZW5zID4gY2xvc2VzKSB7CgkJCQkJc3RyICs9ICcpJzsKCQkJCQkrK2Nsb3NlczsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCX0gd2hpbGUgKCFzdHIuZW1wdHkoKSk7CglyZXR1cm4gMDsKfQo=