code: def find_max_path_sum(node):
      if node is None:
          return (0, 0)
  
      # get the result from the left subtree
      left_result = find_max_path_sum(node.left)
      # get the result from the right subtree
      right_result = find_max_path_sum(node.right)
  
      # create a new path by merging the max left and right subpaths
      current_path = left_result[1] + node.val + right_result[1]
      # find the max path till now, comparing the new path, max path from the left and right subtree
      max_path = max(left_result[0], current_path, right_result[0])
      # find the max subpath, min value for a subpath sum is 0
      max_subpath = max(
          left_result[1] + node.val,
          right_result[1] + node.val,
          node.val,
          0,
      )
  
      return (max_path, max_subpath)
  
label_desc: Use image node_id 2 for calling a global function with example usage: find_max_path_sum(node) and returns: max_path,  max_subpath, int,  int