// output of ./demo/ds/coroutine-paren-demo.cc: // Description: //% Generate all well-formed pairs of parentheses using coroutines. arg 1: 5 == n [Number of paren pairs] default=5 # 0: 0 0 0 0 5 ((((())))) # 1: 0 0 0 1 4 (((()()))) # 2: 0 0 0 2 3 (((())())) # 3: 0 0 0 3 2 (((()))()) # 4: 0 0 0 4 1 (((())))() # 5: 0 0 1 0 4 ((()(()))) # 6: 0 0 1 1 3 ((()()())) # 7: 0 0 1 2 2 ((()())()) # 8: 0 0 1 3 1 ((()()))() # 9: 0 0 2 0 3 ((())(())) # 10: 0 0 2 1 2 ((())()()) # 11: 0 0 2 2 1 ((())())() # 12: 0 0 3 0 2 ((()))(()) # 13: 0 0 3 1 1 ((()))()() # 14: 0 1 0 0 4 (()((()))) # 15: 0 1 0 1 3 (()(()())) # 16: 0 1 0 2 2 (()(())()) # 17: 0 1 0 3 1 (()(()))() # 18: 0 1 1 0 3 (()()(())) # 19: 0 1 1 1 2 (()()()()) # 20: 0 1 1 2 1 (()()())() # 21: 0 1 2 0 2 (()())(()) # 22: 0 1 2 1 1 (()())()() # 23: 0 2 0 0 3 (())((())) # 24: 0 2 0 1 2 (())(()()) # 25: 0 2 0 2 1 (())(())() # 26: 0 2 1 0 2 (())()(()) # 27: 0 2 1 1 1 (())()()() # 28: 1 0 0 0 4 ()(((()))) # 29: 1 0 0 1 3 ()((()())) # 30: 1 0 0 2 2 ()((())()) # 31: 1 0 0 3 1 ()((()))() # 32: 1 0 1 0 3 ()(()(())) # 33: 1 0 1 1 2 ()(()()()) # 34: 1 0 1 2 1 ()(()())() # 35: 1 0 2 0 2 ()(())(()) # 36: 1 0 2 1 1 ()(())()() # 37: 1 1 0 0 3 ()()((())) # 38: 1 1 0 1 2 ()()(()()) # 39: 1 1 0 2 1 ()()(())() # 40: 1 1 1 0 2 ()()()(()) # 41: 1 1 1 1 1 ()()()()()