#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;
int n, L, R;
int a[N];
ll pref[N];
struct Fenwick {
int n;
vector<int> ft;
Fenwick(int n) : n(n) {
ft.resize(n, 0);
}
void update(int pos, int val) {
for (; pos >= 0; pos = (pos & (pos + 1)) - 1) {
ft[pos] += val;
}
}
int get(int pos) {
int ans = 0;
for (; pos < n; pos = pos | (pos + 1)) {
ans += ft[pos];
}
return ans;
}
};
ll countSum(ll X) {
// sum[i + 1..j] <= X
// <=> pref[j] - pref[i] <= X
// <=> pref[i] >= pref[j] - X
vector<ll> vals;
for (int i = 0; i <= n; i++) {
vals.push_back(pref[i]);
}
sort(vals.begin(), vals.end());
vals.resize(unique(vals.begin(), vals.end()) - vals.begin());
Fenwick fenw(vals.size());
ll ans = 0;
for (int j = 0; j <= n; j++) {
// Giá trị nén của pref[i] nhỏ nhất >= pref[j] - X
int u = lower_bound(vals.begin(), vals.end(), pref[j] - X) - vals.begin();
ans += fenw.get(u);
// Giá trị nén của pref[j]
int v = lower_bound(vals.begin(), vals.end(), pref[j]) - vals.begin();
fenw.update(v, 1);
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
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+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIApjb25zdCBpbnQgTiA9IDFlNSArIDU7IAoKaW50IG4sIEwsIFI7IAppbnQgYVtOXTsgCmxsIHByZWZbTl07IAoKc3RydWN0IEZlbndpY2sgewoJaW50IG47IAoJdmVjdG9yPGludD4gZnQ7ICAKCglGZW53aWNrKGludCBuKSA6IG4obikgewoJCWZ0LnJlc2l6ZShuLCAwKTsgCgl9CgoJdm9pZCB1cGRhdGUoaW50IHBvcywgaW50IHZhbCkgewoJCWZvciAoOyBwb3MgPj0gMDsgcG9zID0gKHBvcyAmIChwb3MgKyAxKSkgLSAxKSB7CgkJCWZ0W3Bvc10gKz0gdmFsOyAKCQl9Cgl9CgoJaW50IGdldChpbnQgcG9zKSB7CgkJaW50IGFucyA9IDA7ICAKCQlmb3IgKDsgcG9zIDwgbjsgcG9zID0gcG9zIHwgKHBvcyArIDEpKSB7CgkJCWFucyArPSBmdFtwb3NdOwoJCX0KCQlyZXR1cm4gYW5zOyAKCX0KfTsgCgpsbCBjb3VudFN1bShsbCBYKSB7CgkvLyAgICAgc3VtW2kgKyAxLi5qXSA8PSBYCgkvLyA8PT4gcHJlZltqXSAtIHByZWZbaV0gPD0gWCAKCS8vIDw9PiBwcmVmW2ldID49IHByZWZbal0gLSBYIAoJCgl2ZWN0b3I8bGw+IHZhbHM7ICAKCWZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykgewoJCXZhbHMucHVzaF9iYWNrKHByZWZbaV0pOyAKCX0KCXNvcnQodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpKTsgIAoJdmFscy5yZXNpemUodW5pcXVlKHZhbHMuYmVnaW4oKSwgdmFscy5lbmQoKSkgLSB2YWxzLmJlZ2luKCkpOyAgCgkKCUZlbndpY2sgZmVudyh2YWxzLnNpemUoKSk7IAoJbGwgYW5zID0gMDsgCglmb3IgKGludCBqID0gMDsgaiA8PSBuOyBqKyspIHsKCQkvLyBHacOhIHRy4buLIG7DqW4gY+G7p2EgcHJlZltpXSBuaOG7jyBuaOG6pXQgPj0gcHJlZltqXSAtIFgKCQlpbnQgdSA9IGxvd2VyX2JvdW5kKHZhbHMuYmVnaW4oKSwgdmFscy5lbmQoKSwgcHJlZltqXSAtIFgpIC0gdmFscy5iZWdpbigpOwoJCWFucyArPSBmZW53LmdldCh1KTsgIAoKCQkvLyBHacOhIHRy4buLIG7DqW4gY+G7p2EgcHJlZltqXQoJCWludCB2ID0gbG93ZXJfYm91bmQodmFscy5iZWdpbigpLCB2YWxzLmVuZCgpLCBwcmVmW2pdKSAtIHZhbHMuYmVnaW4oKTsgCgkJZmVudy51cGRhdGUodiwgMSk7IAoJfQoKCXJldHVybiBhbnM7IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAgCQoJY2luID4+IG4gPj4gTCA+PiBSOyAgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldLCBwcmVmW2ldID0gcHJlZltpIC0gMV0gKyBhW2ldOyAKCglsbCBhbnMgPSBjb3VudFN1bShSKSAtIGNvdW50U3VtKEwgLSAxKTsKCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQo=