1def generate_parentheses(n):
2 ans = []
3 stack = []
4 def backtrack(op, cl):
5 if op == cl == n: ans.append(''.join(stack)); return
6 if op < n:
7 stack.append('(')
8 backtrack(op + 1, cl)
9 stack.pop()
10 if cl < op:
11 stack.append(')')
12 backtrack(op, cl + 1)
13 stack.pop()
14 backtrack(0, 0)
15 return ans