public ListNode insertionSortList(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode realHead = new ListNode(0);
        realHead.next = head;
        LinkedList.printList("ReadyForSort : ",realHead.next);
        ListNode p1 = head;
        ListNode p2;
        ListNode temp;
        while(p1.next != null)
        {
            p2 = p1.next;
            if(p1.val > p2.val)
            {
                p1.next = p2.next;
                temp = realHead;
                while(temp.next != null)
                {
                    if(temp.next.val > p2.val)
                    {
                        p2.next = temp.next;
                        temp.next = p2;
                        break;
                    }
                    else temp = temp.next;
                }
                LinkedList.printList(p2.val+" : ",realHead.next);
            }
            else p1 = p1.next;
        }
        return realHead.next;
    }