from typing import List
from typing import Tuple


def merge_and_count(left: List[int], right: List[int]) -> Tuple[List[int], int]:
    """
    merge sublists and count inversions
    
    left - left sorted sublist
    right - right sorted sublist

    return - combined sorted list and number of inversion
    """
    combined: List[int] = []
    inversion_count = 0
    i, j = 0, 0
    num_left, num_right = len(left), len(right)
    while i < num_left and j < num_right:
        a = left[i]
        b = right[j]
        if a <= b:
            combined.append(a)
            i += 1
        else:
            while a > b:
                combined.append(b)
                how_many_crossed_by_b = num_left - i
                inversion_count += how_many_crossed_by_b
                j += 1
                if j == num_right:
                    break
                b = right[j]
    combined += (left[i:] + right[j:])
    return combined, inversion_count