def f(n):r='',;exec"r=[s+c for s in r for t in[s.count('(')]for c in')('[t+t==len(s):2-t/n]];"*2*n;print'\n'.join(r) f(0) f(1) f(2) f(3) f(4)
Standard input is empty
() ()() (()) ()()() ()(()) (())() (()()) ((())) ()()()() ()()(()) ()(())() ()(()()) ()((())) (())()() (())(()) (()())() (()()()) (()(())) ((()))() ((())()) ((()())) (((())))