Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
A combination is well-formed if every opening bracket has a matching closing bracket, in the correct order.
Input: n = 3 Output: ["((()))", "(()())", "(())()", "()(())", "()()()"] Explanation: All 5 valid combinations of 3 pairs of parentheses are listed.
Input: n = 1 Output: ["()"] Explanation: With 1 pair, the only valid combination is "()".
1 <= n <= 8n = 3