Given

*n*pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given

*n*= 3, a solution set is:`"((()))", "(()())", "(())()", "()(())", "()()()"`

Take advantage of the feature of parentheses, left side and right side must match each other, in other words, if there a left side parenthese, whatever position it is, there must be a right side parenthese to match it.