Here is my code:
def merge(l,low,m,high):
n1=m+1-low
n2=high-m
l1=[0](n1)
l2=[0](n2)
for i in range(0,n1):
l1[i]=l[low+i]
for j in range(0,n2):
l2[j]=l[m+1+j]
i,j,k=0,0,low
while i<n1 and j<n2 :
if l1[i]<l2[j]:
l[k]=l1[i]
i +=1
else:
l[k]=l2[j]
j +=1
k +=1
while i<n1:
l[k]=l1[i]
i +=1
k +=1
while j<n2:
l[k]=l2[j]
j+=1
k+=1
def mergesort(l,low,high):
if low<high:
m=int((low+(high-1))/2)
mergesort(l,low,m)
mergesort(l,m+1,high)
merge(l,low,m,high)
n=int(input(""))
l=[int(l) for l in input().split()]
mergesort(l,0,n-1)
for i in range(n):
print(l[i],end=" ")