Generate All Valid Parentheses
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.