#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e5 + 5;
const int M = 2e5 + 5;
int n, L, R;
int a[N];
ll pref[N];
int ft[M];
void init() {
for (int i = 1; i <= 2 * (n + 1); i++) ft[i] = 0;
}
void update(int i, int val) {
for (; i > 0; i -= i & (-i)) ft[i] += val;
}
int getSum(int i) {
int ans = 0;
for (; i <= 2 * (n + 1); i += i & (-i)) ans += ft[i];
return ans;
}
ll countSum(ll X) {
// pref[j] - pref[i] <= X
// <=> pref[i] >= pref[j] - X
// nén những giá trị cần thiết
vector<ll> vals;
for (int i = 0; i <= n; i++) {
vals.push_back(pref[i]);
vals.push_back(pref[i] - X);
}
sort(vals.begin(), vals.end());
vals.resize(unique(vals.begin(), vals.end()) - vals.begin());
// (chú ý khởi tạo lại cây BIT)
init();
ll ans = 0;
for (int j = 0; j <= n; j++) {
// giá trị nén của pref[j] - X
int val_j = lower_bound(vals.begin(), vals.end(), pref[j] - X) - vals.begin() + 1;
ans += getSum(val_j);
// giá trị nén của pref[j]
val_j = lower_bound(vals.begin(), vals.end(), pref[j]) - vals.begin() + 1;
update(val_j, 1);
}
return ans;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> L >> R;
for (int i = 1; i <= n; i++) cin >> a[i], pref[i] = pref[i - 1] + a[i];
ll ans = countSum(R) - countSum(L - 1);
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCmNvbnN0IGludCBOID0gMWU1ICsgNTsgIApjb25zdCBpbnQgTSA9IDJlNSArIDU7IAoKaW50IG4sIEwsIFI7IAppbnQgYVtOXTsgCmxsIHByZWZbTl07IAoKaW50IGZ0W01dOyAKCnZvaWQgaW5pdCgpIHsKCWZvciAoaW50IGkgPSAxOyBpIDw9IDIgKiAobiArIDEpOyBpKyspIGZ0W2ldID0gMDsgCn0KCnZvaWQgdXBkYXRlKGludCBpLCBpbnQgdmFsKSB7Cglmb3IgKDsgaSA+IDA7IGkgLT0gaSAmICgtaSkpIGZ0W2ldICs9IHZhbDsgCn0KCmludCBnZXRTdW0oaW50IGkpIHsKCWludCBhbnMgPSAwOyAgCglmb3IgKDsgaSA8PSAyICogKG4gKyAxKTsgaSArPSBpICYgKC1pKSkgYW5zICs9IGZ0W2ldOyAKCXJldHVybiBhbnM7IAp9CgpsbCBjb3VudFN1bShsbCBYKSB7CgkvLyAgICAgcHJlZltqXSAtIHByZWZbaV0gPD0gWCAKCS8vIDw9PiBwcmVmW2ldID49IHByZWZbal0gLSBYIAoJCgkvLyBuw6luIG5o4buvbmcgZ2nDoSB0cuG7iyBj4bqnbiB0aGnhur90Cgl2ZWN0b3I8bGw+IHZhbHM7ICAKCWZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewoJCXZhbHMucHVzaF9iYWNrKHByZWZbaV0pOyAKCQl2YWxzLnB1c2hfYmFjayhwcmVmW2ldIC0gWCk7IAoJfQoJc29ydCh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCkpOyAgCgl2YWxzLnJlc2l6ZSh1bmlxdWUodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpKSAtIHZhbHMuYmVnaW4oKSk7ICAKCQoJLy8gKGNow7ogw70ga2jhu59pIHThuqFvIGzhuqFpIGPDonkgQklUKQoJaW5pdCgpOyAgIAoKCWxsIGFucyA9IDA7IAoJZm9yIChpbnQgaiA9IDA7IGogPD0gbjsgaisrKSB7CgkJLy8gZ2nDoSB0cuG7iyBuw6luIGPhu6dhIHByZWZbal0gLSBYCgkJaW50IHZhbF9qID0gbG93ZXJfYm91bmQodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpLCBwcmVmW2pdIC0gWCkgLSB2YWxzLmJlZ2luKCkgKyAxOwoJCWFucyArPSBnZXRTdW0odmFsX2opOyAgCgoJCS8vIGdpw6EgdHLhu4sgbsOpbiBj4bunYSBwcmVmW2pdCgkJdmFsX2ogPSBsb3dlcl9ib3VuZCh2YWxzLmJlZ2luKCksIHZhbHMuZW5kKCksIHByZWZbal0pIC0gdmFscy5iZWdpbigpICsgMTsgCgkJdXBkYXRlKHZhbF9qLCAxKTsgCgl9CgoJcmV0dXJuIGFuczsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gbiA+PiBMID4+IFI7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV0sIHByZWZbaV0gPSBwcmVmW2kgLSAxXSArIGFbaV07IAoKCWxsIGFucyA9IGNvdW50U3VtKFIpIC0gY291bnRTdW0oTCAtIDEpOwoKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9Cg==