#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long vpow(long long a, long long b, long long p) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long temp = vpow(a, b / 2, p);
  temp *= temp;
  temp %= p;
  if (b % 2 == 0) return temp;
  temp = temp * a;
  temp %= p;
  return temp;
}
long long inverseMod(long long a, long long b, long long p) {
  long long temp = vpow(b, p - 2, p);
  long long ans = temp * a;
  ans %= p;
  return ans;
}
long long minl(long long a, long long b) {
  if (a > b) return b;
  return a;
}
long long maxl(long long a, long long b) {
  if (a > b) return a;
  return b;
}
void solve() {
  long long n, l, r, x;
  cin >> n >> l >> r >> x;
  vector<long long> a(n);
  for (__typeof((n)) i = (0); i < (n); i++) cin >> a[i];
  sort((a).begin(), (a).end());
  long long lim = pow(2, n);
  long long ans = 0;
  for (__typeof((lim)) i = (0); i < (lim); i++) {
    bitset<16> bs(i);
    long long mina = INT_MAX, maxa = INT_MIN;
    long long sum = 0;
    for (__typeof((n)) j = (0); j < (n); j++) {
      if (bs[j] == 1) {
        sum += a[j];
        mina = min(mina, a[j]);
        maxa = max(maxa, a[j]);
      }
    }
    if (sum >= l && sum <= r && (abs(mina - maxa) >= x)) ans++;
  }
  cout << ans << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  cout << fixed << setprecision(12);
  while (t--) solve();
  return 0;
}
