public Node<Integer> mergeSort(Node<Integer> head) {
		if (head == null)
			return null;

		if (head.next == null)
			return head;

		Node<Integer> slow = head;
		Node<Integer> fast = head;
		while (fast.next != null && fast.next.next != null) {
			slow = slow.next;
			fast = fast.next.next;
		}
		Node<Integer> sec = slow.next;
		slow.next = null;

		return merge(mergeSort(head), mergeSort(sec));
	}