vector<vector<int> > pathSum(TreeNode* root, int sum) {
        vector<vector<int> > result,left,right;
        if(!root)
            return result;
        if(!root->left&&!root->right&&sum==root->val)
              return {{root->val}};
        if(root->left)
        {
            left=pathSum(root->left,sum-root->val);
            for(auto i : left)
            {
                i.insert(i.begin(), root->val);
                result.push_back(i);
            }
        }
        if(root->right)
        {
            right=pathSum(root->right,sum-root->val);
            for(auto i : right)
            {
                i.insert(i.begin(), root->val);
                result.push_back(i);
            }
        }
        return result;
    }