public static ListNode mergeTwoLists(ListNode l1, ListNode l2) {
		if (null == l2) return l1;
		if (null == l1) return l2;
        ListNode ah = l1;
        ListNode bh = l2;
        ListNode rh = null;
        ListNode p = null;
		while (null != ah && null != bh) {
        	if (ah.val < bh.val) {
        		if (null == rh) {rh = ah; p = ah;}
        		else {p.next = ah;p = p.next;}
        		ah = ah.next;
        	} else {
        		if (null == rh) {rh = bh; p = bh;}
        		else {p.next = bh;p = p.next;}
        		bh = bh.next;
        	}
        }
		if (null != ah) p.next = ah;
		if (null != bh) p.next = bh;
		return rh;
    }