void backtrack(int[] num, int target, int cursum, int lvl) {
		if (cursum == target) {
			List<Integer> newList = new ArrayList<Integer>(list);
			if (!result.contains(newList)) {
				result.add(newList);
			}
			return;
		} else if (cursum > target || lvl == num.length) {
			return;
		} else {
			list.add(num[lvl]);
			backtrack(num, target, cursum + num[lvl], lvl + 1);
			list.remove(list.size() - 1);
			backtrack(num, target, cursum, lvl + 1);
		}

	}