public void dfs(int left, int right){
        if(left == 0 && right == 0){
            result.add(new String(single));
            return;
        }

        if(left > 0){
            single.append('(');
            dfs(left - 1, right);
            single.deleteCharAt(single.length() - 1);
        }

        if(left < right){
            single.append(')');
            dfs(left, right - 1);
            single.deleteCharAt(single.length() - 1);
        }
    }