function findMaximumSubarray(arr, low, high) {
if (high === low + 1) return [low, high, arr[low]];
else {
const mid = parseInt((low + high) / 2, 10);
const [leftLow, leftHigh, leftSum] = findMaximumSubarray(arr, low, mid);
const [rightLow, rightHigh, rightSum] = findMaximumSubarray(arr, mid, high);
const [crossLow, crossHigh, crossSum] = findMaxCrossingSubarray(arr, low, mid, high);
if (leftSum >= rightSum && leftSum >= crossSum) return [leftLow, leftHigh, leftSum];
else if (rightSum >= leftSum && rightSum >= crossSum) return [rightLow, rightHigh, rightSum];
else return [crossLow, crossHigh, crossSum];
}
}