input: Write a function to implement a merge sort algorithm that merges two large lists A and B. The function should compare the elements of both lists starting from their first elements. If an element from list A is smaller than the element from list B, it should be added to the result list and the pointer in list A should be moved to the next element. If the element from list B is smaller or equal, it should be added to the result list and the pointer in list B should be moved to the next element. This process should continue until all elements from both lists have been added to the result list in sorted order. If either list is exhausted, the remaining elements of the other list should be appended to the result list. The function should return the merged and sorted list.
  assert merge_sort([3, 6, 8, 10, 11], [2, 5, 7, 12]) == [2, 3, 5, 6, 7, 8, 10, 11, 12]
  assert merge_sort([1, 3, 5], [2, 4, 6]) == [1, 2, 3, 4, 5, 6]
  assert merge_sort([5, 7], [1, 2, 3, 4, 6]) == [1, 2, 3, 4, 5, 6, 7]
  assert merge_sort([], [1, 2, 3]) == [1, 2, 3]
  assert merge_sort([1, 2, 3], []) == [1, 2, 3]
output: def merge_sort(A, B):
      result = []
      i, j = 0, 0
      while i < len(A) and j < len(B):
          if A[i] < B[j]:
              result.append(A[i])
              i += 1
          else:
              result.append(B[j])
              j += 1
      result.extend(A[i:])
      result.extend(B[j:])
      return result