vector<string> generateParenthesis(int n) {
vector<string>v;
string op="";
int open=n;
int close=n;
solve1(open,close,op,v);
return v;
}
void solve1(int open, int close, string op, vector<string>&v)
{
if(open==0 && close==0)
{
v.push_back(op);
return;
}
else
{
if(open!=0)
{
string op1=op;
op1.push_back('(');
solve1(open-1,close,op1,v);
}
if(close>open)
{
string op2=op;
op2.push_back(')');
solve1(open,close-1,op2,v);
return;
}
}
}
};