input: Write a function to merge and sort two large lists, A and B. The function should compare the first elements of both lists, append the smaller element to the result list, and move the pointer to the next element in the list from which the smaller element was taken. This process should continue until all elements from both lists are added to the result list. Return the fully merged and sorted result 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, 7], [2, 4, 6, 8]) == [1, 2, 3, 4, 5, 6, 7, 8]
  assert merge_sort([5, 6, 7], [1, 2, 3, 4]) == [1, 2, 3, 4, 5, 6, 7]
  assert merge_sort([], [1, 2, 3]) == [1, 2, 3]
  assert merge_sort([], []) == []
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