Given N pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example: N = 3 -->
[
  '((()))',
  '(()())',
  '(())()',
  '()(())',
  '()()()'
]
 
Test set 1
Result:
 
Test set 2
Result:
 
Test set 3
Result:
 
Test set 4
Result: