input: Write a function to merge two sorted lists A and B into a single sorted list. The function should compare the first elements of both lists and add the smaller element to the result list, then move the pointer to the next element of the list from which the element was taken. Repeat this process until all elements from both lists are added to the result list. If one list is exhausted, append the remaining elements of the other list to the result. The function should return the merged 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([], [1, 2, 3])==[1, 2, 3]
  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