private ArrayList<ArrayList<Integer>> twoSumInternal(int[] numbers, int target, int startpos) {
    	ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();
    	if(numbers.length<2) return result;
    	HashMap<Integer, Integer> maps = new HashMap<Integer, Integer>();
    	int lastUniqe = numbers[0];
        for(int i=startpos; i<numbers.length; i++)
        {
        	maps.put(numbers[i], i);
        }
        
        for(int i=startpos; i<numbers.length; i++)
        {
        	if(i==startpos || numbers[i] != lastUniqe)
        	{
        		lastUniqe = numbers[i];
            	if(maps.containsKey(target-numbers[i])&& i< maps.get(target-numbers[i])) 
            	{
            		       		
            		ArrayList<Integer> res = new ArrayList<Integer>();
                    res.add(numbers[i]);
                    res.add(target-numbers[i]);
                    result.add(res); 
            	}
        	}

        }
		return result;
    }