public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
    	ArrayList<ArrayList<Integer>> rst = new ArrayList<ArrayList<Integer>>();
    	Arrays.sort(num);
    	if (target ==  0)
    	{
    		rst.add(new ArrayList<Integer>());
    		return rst;
    	}
    	for (int i= 0 ; i < num.length &&  num[i] <= target; i++)
    	{
    		ArrayList<Integer> tmp = new ArrayList<Integer>();
    		search(i,target,num,tmp,rst);
    		while (i < num.length - 1 && num[i + 1] == num[i]) i++;
    	}
    	return rst;
    }