from typing import List


def max_crossing_sum(lst: List[int], mid: int, n: int) -> int:
    """
    Parameter <mid> is the floor middle index of <lst>.
    Parameter <n> is the length of the input list <lst>.
    Pre: <lst> is a list of integers and len(lst) >= 2.
    Post: returns the maximum contiguous crossing sum starting from the middle of <lst>.

    >>> max_crossing_sum([2, -5, 8, -6, 10, -2], 3, 6)
    12
    """
    left_sum, right_sum, total = 0, 0, 0    # initialize values

    # max sum of the left half
    k = mid - 1
    i = 0
    while i < mid:
        total += lst[k - i]
        i += 1
        if total > left_sum:
            left_sum = total

    # # max sum the left half
    # for i in range(mid - 1, -1, -1):        # iterate from index mid - 1...0 backward
    #     total += lst[i]
    #     if total > left_sum:
    #         left_sum = total

    total = 0
    # max sum the right half
    for i in range(mid, n):                 # iterate from index mid...n - 1
        total += lst[i]
        if total > right_sum:
            right_sum = total

    # note: left_sum and right_sum are each at least zero
    return left_sum + right_sum