void backtrack(int[] candidates, int target, int sum, int level) {

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

	}