import java.util.ArrayList;
import java.util.Scanner;
public class ParenthesisCompSolution {
public static ArrayList<String> arrs=new ArrayList<String>();//存所有括号对组合
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=0;
while(sc.hasNext()){
num=sc.nextInt();
getAllParenthesis(num,num,"");
for(int i=0;i<arrs.size();i++){
System.out.println(arrs.get(i));
}
arrs.clear();
}
}
public static void getAllParenthesis(int left,int right,String res){//初始状态left=right=num,表示左右括号数,res记录结果
if(left==0 && right==0){
arrs.add(res);
return;
}
if(left>0){
getAllParenthesis(left-1,right,res+"(");
}
if(left<right){//保证有效括号对
getAllParenthesis(left,right-1,res+")");
}
}
}
import java.util.Scanner;
public class ParenthesisCompSolution {
public static ArrayList<String> arrs=new ArrayList<String>();//存所有括号对组合
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num=0;
while(sc.hasNext()){
num=sc.nextInt();
getAllParenthesis(num,num,"");
for(int i=0;i<arrs.size();i++){
System.out.println(arrs.get(i));
}
arrs.clear();
}
}
public static void getAllParenthesis(int left,int right,String res){//初始状态left=right=num,表示左右括号数,res记录结果
if(left==0 && right==0){
arrs.add(res);
return;
}
if(left>0){
getAllParenthesis(left-1,right,res+"(");
}
if(left<right){//保证有效括号对
getAllParenthesis(left,right-1,res+")");
}
}
}