diff --git a/tp9/merge_sort.py b/tp9/merge_sort.py
index 4e88e30ddd568df09986d41da2701066690fd88f..ea1fb8f728c5af428d1fd6af3b2150e1d83752c4 100644
--- a/tp9/merge_sort.py
+++ b/tp9/merge_sort.py
@@ -214,7 +214,17 @@ def mergesort(l: ApLst, comp: Callable[[T, T], int]=compare) -> ApLst:
     $$$ is_sorted(l1)
     True
     """
-    pass
+    if not l.is_empty():
+        l1, l2 = split(l)
+        for i in range(length(l)):
+            a = l1.head()
+            l1 = l1.tail()
+            b = l1.head()
+            for k in range(length(l)-1):
+                if compare(a, b) != -1:
+                    l1 = l1.tail()
+                    l1 = ApLst(b, ApLst(a, l1))
+                l1 = l1.tail()
 
 
 if (__name__ == '__main__'):