#include using namespace std; class Solution { public: vector generateParenthesis(int n) { vector result; function recursive = [&](string s, char next, int leftCount, int totalLeftCount) { s.push_back(next); if (s.length() == n * 2) { result.emplace_back(s); return; } if (totalLeftCount < n) { recursive(s, '(', leftCount + 1, totalLeftCount + 1); } if (leftCount > 0) { recursive(s, ')', leftCount - 1, totalLeftCount); } }; recursive("", '(', 1, 1); return result; } };