public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {
        res = new ArrayList<ArrayList<Integer>>();
        this.num = num;
        this.target = target;
        if(num != null && num.length > 0){
        	quicksort(0, num.length - 1);
            if(num[0] <= target){
                array = new int[num.length];
                appears = new int[num.length];
                length = 0;
                appears[0] = 1;
                for(int i = 1; i < num.length; i++){
                	if(num[i] != num[length]){
                		num[++length] = num[i];
                		appears[length] = 1;
                	} else 
                		appears[length]++;
                }
                length++;
                visit(0, 0, 0);
            }
        }
        return res;
    }