def find_max_sub_array(a, low, high):
    if low == high:
        return low, high, a[low]
    else:
        mid = (low + high) // 2
        left_low, left_high, left_sum = find_max_sub_array(a, low, mid)
        right_low, right_high, right_sum = find_max_sub_array(a, mid + 1, high)
        cross_left, cross_right, cross_sum = find_max_cross_sum(a, low, mid, high)
        if left_sum >= right_sum and left_sum >= cross_sum:
            return left_low, left_high, left_sum
        elif right_sum >= left_sum and right_sum >= cross_sum:
            return right_low, right_high, right_sum
        else:
            return cross_left, cross_right, cross_sum