input: Write a function to implement a merge sort algorithm that merges two given 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 in the respective list. Continue this process until all elements from both lists have been added to the result list. If one list is exhausted before the other, append the remaining elements of the other list to the result list. Return the result list.
  
  def merge_sort(A, B):
   result = [] 
   i, j = 0, 0
  
  # Compare elements and add lower one to result
  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
  
  # Add remaining elements
  result += A[i:]
  result += B[j:]
  
  return result
  
  #Test the algorithm with given input
  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 += A[i:]
   result += B[j:]
  
   return result
  