input: Write a function to implement an algorithm that merges two sorted lists A and B into a single sorted list. The function should compare the first elements of both lists, append the smaller one to the result list, and move the corresponding pointer to the next element. This process should continue until all elements from both lists are added to the result list. If one list is exhausted, the remaining elements from the other list should be added directly to the 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], [2, 4, 6]) == [1, 2, 3, 4, 5, 6]
  assert merge_sort([], [1, 2, 3]) == [1, 2, 3]
  assert merge_sort([4, 5, 6], []) == [4, 5, 6]
  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