Given an integer n, generate all strings with n matching parentheses. "matching" parentheses mean
there is equal number of opening and closing parentheses.
each opening parenthesis has matching closing parentheses.
For example, () is a valid string but )( is not a valid string because ) has no matching parenthesis before it and ( has no matching parenthesis after it.
Input
n: number of matching parentheses
Output
all valid strings with n matching parentheses
Examples
Example 1
Input
n = 2
Output: (()) ()()
Explanation
There are two ways to create a string with 2 matching parentheses.
Example 2
Input
n = 3
Output: ((())) (()()) (())() ()(()) ()()()
Explanation
There are 5 ways to create a string with 3 matching parentheses.