class Solution {
    int maxx=INT_MIN;
public:
    
    int ans(TreeNode* root)
    {
        if(root==NULL)return 0;
        int l = ans(root->left);
        int r = ans(root->right);
        maxx = max(maxx,l+r+root->val);
        return max(0,max(l+root->val,r+root->val));
    }
    int maxPathSum(TreeNode* root) {
        int pathSum = ans(root);
        return maxx;
    }
};