#include <bits/stdc++.h>   using namespace std;   const long long modl = 1000000007;   int farr[1000000];   int pre[1000000];   int cum[1000000];   unsigned long long poow(int base, int po);   void swaap(int *a, int *b);   long long gcd(long long a, long long b);   void mul_big_int(string s1, string s2);   int cnt_prime(int n);   int main() {     cin.tie(0);     cin.sync_with_stdio(0);     int n, l, r, cntr = 0, sum = 0, num = 0;     long long x;     int maxi = INT_MIN, mini = INT_MAX;     cin >> n >> l >> r >> x;     int arr[n];     for (int i = 0; i < n; i++) cin >> arr[i];     for (int i = 0; i < (1 << n); i++) {       for (int j = 0; j < n; j++) {         int r;         r = i & (1 << j);         if (r) {           cntr++;           sum += arr[j];           maxi = max(maxi, arr[j]);           mini = min(mini, arr[j]);         }       }       if (cntr >= 2) {         if (sum >= l && sum <= r) {           if (maxi - mini >= x) num++;         }       }       cntr = 0;       maxi = INT_MIN;       mini = INT_MAX;       sum = 0;     }     cout << num <<   n ;     return 0;   }   unsigned long long poow(int base, int po) {     if (po == 0) return 1;     if (po == 1) return base;     unsigned long long ans = poow(base, po / 2);     ans = (ans * ans);     if (po & 1) return (ans * base);     return ans;   }   void swaap(int *a, int *b) {     int temp;     temp = *a;     *a = *b;     *b = temp;   }   long long gcd(long long a, long long b) {     if (b == 0) return a;     return gcd(b, a % b);   }   void mul_big_int(string s1, string s2) {     reverse(s1.begin(), s1.end());     reverse(s2.begin(), s2.end());     int mul[1000];     memset(mul, 0, sizeof(mul));     long long ln1 = s1.length(), ln2 = s2.length();     for (int i = 0; i < ln1; i++) {       for (int j = 0; j < ln2; j++) {         mul[i + j] += ((s1[i] -  0 ) * (s2[j] -  0 ));       }     }     for (int i = 0; i < 1000; i++) {       mul[i + 1] += mul[i] / 10;       mul[i] %= 10;     }     int i = 999;     while (i > 0 && mul[i] == 0) i--;     for (; i >= 0; i--) {       cout << mul[i];     }     cout << endl;   }   int cnt_prime(int n) {     vector<bool> prime(n + 1, true);     prime[0] = false;     prime[1] = false;     for (long long i = 2; i * i <= n; i++) {       if (prime[i]) {         for (int j = i * i; j <= n; j += i) prime[j] = 0;       }     }     int cntr = 0;     for (int i = 0; i < (int)prime.size(); i++) {       if (prime[i]) cntr++;     }     return cntr;   }   