import sys

def merge_and_count(arr, temp_arr, left, mid, right):
    i = left
    j = mid + 1
    k = left
    inv_count = 0
  
    while i <= mid and j <= right:
        if arr[i] <= arr[j]:
            temp_arr[k] = arr[i]
            k += 1
            i += 1
        else:
            temp_arr[k] = arr[j]
            inv_count += (mid-i + 1)
            k += 1
            j += 1
  
    while i <= mid:
        temp_arr[k] = arr[i]
        k += 1
        i += 1
  
    while j <= right:
        temp_arr[k] = arr[j]
        k += 1
        j += 1
  
    for loop_var in range(left, right + 1):
        arr[loop_var] = temp_arr[loop_var]
        
    return inv_count

def merge_sort(arr, temp_arr, left, right):
    inv_count = 0
    if left < right:
        mid = (left + right)//2
        inv_count += merge_sort(arr, temp_arr, left, mid)
        inv_count += merge_sort(arr, temp_arr, mid + 1, right)
        inv_count += merge_and_count(arr, temp_arr, left, mid, right)
    return inv_count

def solve():
    input_str = sys.stdin.read()
    
    nums = []
    current_num = ""
    for char in input_str:
        if char.isdigit() or char == '-':
            current_num += char
        elif current_num:
            nums.append(int(current_num))
            current_num = ""
    if current_num:
        nums.append(int(current_num))
        
    if not nums:
        return

    temp_arr = [0]*len(nums)
    result = merge_sort(nums, temp_arr, 0, len(nums)-1)
    print(f"Number of Inversions = {result}")

if __name__ == "__main__":
    solve()

# Sample Test Case
# ----------------
# Input:
# Array = {7, 5, 3, 1}
#
# Output:
# Number of Inversions = 6