func_code_string: #include <bits/stdc++.h>   using namespace std;   long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }   long long lcm(long long a, long long b) { return a * (b / gcd(a, b)); }   long long power(long long x, long long y, long long p) {     long long res = 1;     x = x % p;     while (y > 0) {       if (y & 1) res = ((res % p) * (x % p)) % p;       y = y >> 1;       x = ((x % p) * (x % p)) % p;     }     return res % p;   }   long long raichu(long long x, long long y) {     long long res = 1;     while (y > 0) {       if (y & 1) res = ((res) * (x));       y = y >> 1;       x = ((x) * (x));     }     return res;   }   bool isprime(long long n) {     if (n < 2)       return false;     else if (n == 2)       return true;     else if (n % 2 == 0)       return false;     else {       long long z = sqrt(n);       for (int i = 0; i < z - 1; i++)         if (n % (i + 2) == 0) return false;       return true;     }   }   int32_t main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int tests = 1, Tests;     Tests = tests;     while (tests--) {       int n, l, r, x;       cin >> n >> l >> r >> x;       vector<int> c(n);       for (int i = 0; i < n; i++) cin >> c[i];       vector<int> tmp;       sort(c.begin(), c.end());       int ans = 0;       for (int i = 0; i < (1 << n); i++) {         tmp.clear();         int sum = 0;         for (int j = 0; j < n; j++) {           if ((i >> j) & 1) {             tmp.push_back(c[j]);             sum += c[j];           }         }         if ((int)tmp.size() >= 2 && sum >= l && sum <= r &&             tmp[(int)tmp.size() - 1] - tmp[0] >= x) {           ans++;         }       }       cout << ans;     }     return 0;   }   