public void updateHelper(SegTree node, int i, int val) {
      if (node == null) return;

      if (node.start == node.end && node.start == i) {
        node.sum = val;
        return;
      }

      int mid = (node.start + node.end) / 2;
      if (i <= mid) {
        updateHelper(node.left, i, val);
      } else {
        updateHelper(node.right, i, val);
      }

      node.sum = node.left.sum + node.right.sum;
    }
 public SegTree buildTree(int nums[], int i, int j) {
   if (j < i) return null;
   SegTree node = new SegTree(i, j);
   if (i == j) {
     node.sum = nums[i];
     return node;
   }
   int mid = (i + j) / 2;
   node.left = buildTree(nums, i, mid);
   node.right = buildTree(nums, mid + 1, j);
   if (node.left != null) node.sum += node.left.sum;
   if (node.right != null) node.sum += node.right.sum;
   return node;
 }