private ListNode merge(ListNode left, ListNode right){
    	ListNode result = new ListNode(-1);
    	ListNode current = result;
    	
    	while(left != null || right != null){
    		int lval = left  == null ? right.val + 1 : left.val;
    		int rval = right == null ? left.val  + 1 : right.val;
    		
    		if(lval < rval){
    			current.next = left;
    			left = left.next;
    		}else{
    			current.next = right;
    			right = right.next;
    		}
    		
    		current = current.next;
    	}
    	return result.next;
    }