Given the head of a linked list, return the list after sorting it in ascending order.
Input: head = [4,2,1,3]
Input: head = [-1,5,3,4,0]
Input: head = 
The number of nodes in the list is in the range $[0, 5 * 10^4]$.
$-10^5 <= Node.val <= 10^5$
Merge sort is defined as a sorting algorithm that works by dividing an array into smaller subarrays, sorting each subarray, and then merging the sorted subarrays back together to form the final sorted array.