public static <T extends Comparable<T>> MyListNode<T> insertionSorting(MyListNode<T> head) {
		if(head == null) {
			return null;
		}
		
		MyListNode<T> tmpHead = new MyListNode<T>();
		tmpHead.next = head;
		MyListNode<T> currNode = head.next;
		head.next = null;
		
		while(currNode != null) {
			MyListNode<T> next = currNode.next;
			MyListNode<T> node = tmpHead.next;
			MyListNode<T> pre = tmpHead;
			while(node!=null && node!=currNode) {
				if(currNode.getValue().compareTo(node.getValue()) < 0) {
					currNode.next = node;
					pre.next = currNode;
					break;
				}
				pre = node;
				node = node.next;
			}
			if(node == null) {
				currNode.next = pre.next;
				pre.next = currNode;
			}
			currNode = next;
		}
		
		return tmpHead.next;
	}