private ListNode merge(ListNode left, ListNode right) {
    	
    	ListNode result = new ListNode(0);
    	ListNode position = result;
    	
    	int lVal = 0;
    	int rVal = 0;
    	
    	while(null != left || null != right) {
    		if(left != null) {
    			lVal = left.val;
    		}else{
    			lVal = Integer.MAX_VALUE;
    		}
    		
    		if(right != null) {
    			rVal = right.val;
    		}else {
    			rVal = Integer.MAX_VALUE;
    		}
    		
    		if(lVal < rVal) {
    			position.next = left;
    			position = position.next;
    			
    			left = left.next;
    			
    			position.next = null;
    			
    		}else if(lVal >= rVal) {
    			position.next = right;
    			position = position.next;
    			
    			right = right.next;
    			
    			position.next = null;
    		}
    	}
    	
    	return result.next;
    }