Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
A well-formed parentheses string has equal numbers of opening and closing parentheses, with every closing parenthesis matching a preceding opening one.
1 <= n <= 8n = 3["((()))","(()())","(())()","()(())","()()()"]n = 1["()"]