#define rep(i, n) for (int i = 0; i < (n); ++i)
class Solution {
public:
int beautifulSubsets(vector<int>& nums, int k) {
int n = nums.size();
vector<int> invalid(n);
rep(i, n)rep(j, n) {
if (abs(nums[i]-nums[j]) == k) invalid[i] |= 1<<j;
}
int res = 0;
for (int s = 1; s < (1<<n); ++s) {
bool ok = true;
rep(i, n) if (s>>i&1) {
if (s&invalid[i]) ok = false;
}
if (ok) res++;
}
return res;
}
};