public ListNode insertionSortList(ListNode head) {
        if(head == null) return null;
        ListNode dummy = new ListNode(head.val);
        ListNode p = dummy;
        dummy.next = head;
        while(p.next != null){
            ListNode pp = dummy;
            if(p.next.val >= p.val) {
                p = p.next;
                continue;
            }
            ListNode tmp = p.next;
            p.next = tmp.next;
            while(pp.next != p.next){
                if(tmp.val <= pp.next.val){
                    tmp.next = pp.next;
                    pp.next = tmp;
                    break;
                }else{
                    pp = pp.next;
                }
            }
        }
        return dummy.next;
    }