#include<bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#define int long long
#define maxn 400005
#define itachi ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
int N;
long long L, R;
long long a[maxn], pref[maxn];
long long D[maxn];
long long comp[maxn];
int pos[maxn];
int nComp;
int st[4 * maxn];
void update(int id, int l, int r, int pos, int val){
if(l == r){
st[id] += val;
return;
}
int mid = (l + r) >> 1;
if(pos <= mid) update(id << 1, l, mid, pos, val);
else update(id << 1 | 1, mid + 1, r, pos, val);
st[id] = st[id << 1] + st[id << 1 | 1];
}
int get(int id, int l, int r, int u, int v){
if(v < l || r < u) return 0;
if(u <= l && r <= v) return st[id];
int mid = (l + r) >> 1;
return get(id << 1, l, mid, u, v)
+ get(id << 1 | 1, mid + 1, r, u, v);
}
int32_t main(){
itachi;
cin >> N >> L >> R;
for(int i = 1; i <= N; i++){
cin >> a[i];
pref[i] = pref[i-1] + a[i];
}
// Build D
D[0] = 0;
for(int i = 1; i <= N; i++) D[i] = pref[i];
for(int i = 1; i <= N-1; i++) D[N+i] = pref[N] + pref[i];
int M = 2 * N;
// compress
for(int i = 0; i < M; i++) comp[i] = D[i];
sort(comp, comp + M);
nComp = unique(comp, comp + M) - comp;
for(int i = 0; i < M; i++){
pos[i] = lower_bound(comp, comp + nComp, D[i]) - comp;
}
auto getRange = [&](long long x, long long y){
if(x > y) return 0LL;
int l = lower_bound(comp, comp + nComp, x) - comp;
int r = upper_bound(comp, comp + nComp, y) - comp - 1;
if(l > r) return 0LL;
return (long long)get(1, 0, nComp-1, l, r);
};
// ================= total =================
long long total = 0;
for(int r = 1; r <= 2*N-2; r++){
int addIdx = r - 1;
if(addIdx < N) update(1, 0, nComp-1, pos[addIdx], 1);
int remIdx = r - N;
if(remIdx >= 0) update(1, 0, nComp-1, pos[remIdx], -1);
total += getRange(D[r] - R, D[r] - L);
}
// clear tree
memset(st, 0, sizeof(st));
// ================= bad[i] =================
long long bad[maxn] = {0};
long long cur = 0;
// i = 0 window: D[1..N]
for(int j = 1; j <= N; j++){
cur += getRange(D[j] - R, D[j] - L);
update(1, 0, nComp-1, pos[j], 1);
}
bad[0] = cur;
for(int i = 1; i < N; i++){
long long x = D[i];
update(1, 0, nComp-1, pos[i], -1);
cur -= getRange(x + L, x + R);
long long y = D[i + N];
cur += getRange(y - R, y - L);
update(1, 0, nComp-1, pos[i + N], 1);
bad[i] = cur;
}
for(int i = 0; i < N; i++){
cout << total - bad[i] << ' ';
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zLHVucm9sbC1sb29wcyIpCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIG1heG4gNDAwMDA1CiNkZWZpbmUgaXRhY2hpIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgTjsKbG9uZyBsb25nIEwsIFI7Cgpsb25nIGxvbmcgYVttYXhuXSwgcHJlZlttYXhuXTsKbG9uZyBsb25nIERbbWF4bl07CmxvbmcgbG9uZyBjb21wW21heG5dOwppbnQgcG9zW21heG5dOwoKaW50IG5Db21wOwppbnQgc3RbNCAqIG1heG5dOwoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwb3MsIGludCB2YWwpewogICAgaWYobCA9PSByKXsKICAgICAgICBzdFtpZF0gKz0gdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CiAgICBpZihwb3MgPD0gbWlkKSB1cGRhdGUoaWQgPDwgMSwgbCwgbWlkLCBwb3MsIHZhbCk7CiAgICBlbHNlIHVwZGF0ZShpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgcG9zLCB2YWwpOwogICAgc3RbaWRdID0gc3RbaWQgPDwgMV0gKyBzdFtpZCA8PCAxIHwgMV07Cn0KCmludCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdil7CiAgICBpZih2IDwgbCB8fCByIDwgdSkgcmV0dXJuIDA7CiAgICBpZih1IDw9IGwgJiYgciA8PSB2KSByZXR1cm4gc3RbaWRdOwogICAgaW50IG1pZCA9IChsICsgcikgPj4gMTsKICAgIHJldHVybiBnZXQoaWQgPDwgMSwgbCwgbWlkLCB1LCB2KQogICAgICAgICArIGdldChpZCA8PCAxIHwgMSwgbWlkICsgMSwgciwgdSwgdik7Cn0KCmludDMyX3QgbWFpbigpewogICAgaXRhY2hpOwoKICAgIGNpbiA+PiBOID4+IEwgPj4gUjsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgICAgICBwcmVmW2ldID0gcHJlZltpLTFdICsgYVtpXTsKICAgIH0KCiAgICAvLyBCdWlsZCBECiAgICBEWzBdID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKSBEW2ldID0gcHJlZltpXTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gTi0xOyBpKyspIERbTitpXSA9IHByZWZbTl0gKyBwcmVmW2ldOwoKICAgIGludCBNID0gMiAqIE47CgogICAgLy8gY29tcHJlc3MKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBNOyBpKyspIGNvbXBbaV0gPSBEW2ldOwogICAgc29ydChjb21wLCBjb21wICsgTSk7CiAgICBuQ29tcCA9IHVuaXF1ZShjb21wLCBjb21wICsgTSkgLSBjb21wOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBNOyBpKyspewogICAgICAgIHBvc1tpXSA9IGxvd2VyX2JvdW5kKGNvbXAsIGNvbXAgKyBuQ29tcCwgRFtpXSkgLSBjb21wOwogICAgfQoKICAgIGF1dG8gZ2V0UmFuZ2UgPSBbJl0obG9uZyBsb25nIHgsIGxvbmcgbG9uZyB5KXsKICAgICAgICBpZih4ID4geSkgcmV0dXJuIDBMTDsKICAgICAgICBpbnQgbCA9IGxvd2VyX2JvdW5kKGNvbXAsIGNvbXAgKyBuQ29tcCwgeCkgLSBjb21wOwogICAgICAgIGludCByID0gdXBwZXJfYm91bmQoY29tcCwgY29tcCArIG5Db21wLCB5KSAtIGNvbXAgLSAxOwogICAgICAgIGlmKGwgPiByKSByZXR1cm4gMExMOwogICAgICAgIHJldHVybiAobG9uZyBsb25nKWdldCgxLCAwLCBuQ29tcC0xLCBsLCByKTsKICAgIH07CgogICAgLy8gPT09PT09PT09PT09PT09PT0gdG90YWwgPT09PT09PT09PT09PT09PT0KICAgIGxvbmcgbG9uZyB0b3RhbCA9IDA7CgogICAgZm9yKGludCByID0gMTsgciA8PSAyKk4tMjsgcisrKXsKICAgICAgICBpbnQgYWRkSWR4ID0gciAtIDE7CiAgICAgICAgaWYoYWRkSWR4IDwgTikgdXBkYXRlKDEsIDAsIG5Db21wLTEsIHBvc1thZGRJZHhdLCAxKTsKCiAgICAgICAgaW50IHJlbUlkeCA9IHIgLSBOOwogICAgICAgIGlmKHJlbUlkeCA+PSAwKSB1cGRhdGUoMSwgMCwgbkNvbXAtMSwgcG9zW3JlbUlkeF0sIC0xKTsKCiAgICAgICAgdG90YWwgKz0gZ2V0UmFuZ2UoRFtyXSAtIFIsIERbcl0gLSBMKTsKICAgIH0KCiAgICAvLyBjbGVhciB0cmVlCiAgICBtZW1zZXQoc3QsIDAsIHNpemVvZihzdCkpOwoKICAgIC8vID09PT09PT09PT09PT09PT09IGJhZFtpXSA9PT09PT09PT09PT09PT09PQogICAgbG9uZyBsb25nIGJhZFttYXhuXSA9IHswfTsKICAgIGxvbmcgbG9uZyBjdXIgPSAwOwoKICAgIC8vIGkgPSAwIHdpbmRvdzogRFsxLi5OXQogICAgZm9yKGludCBqID0gMTsgaiA8PSBOOyBqKyspewogICAgICAgIGN1ciArPSBnZXRSYW5nZShEW2pdIC0gUiwgRFtqXSAtIEwpOwogICAgICAgIHVwZGF0ZSgxLCAwLCBuQ29tcC0xLCBwb3Nbal0sIDEpOwogICAgfQogICAgYmFkWzBdID0gY3VyOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPCBOOyBpKyspewogICAgICAgIGxvbmcgbG9uZyB4ID0gRFtpXTsKCiAgICAgICAgdXBkYXRlKDEsIDAsIG5Db21wLTEsIHBvc1tpXSwgLTEpOwogICAgICAgIGN1ciAtPSBnZXRSYW5nZSh4ICsgTCwgeCArIFIpOwoKICAgICAgICBsb25nIGxvbmcgeSA9IERbaSArIE5dOwogICAgICAgIGN1ciArPSBnZXRSYW5nZSh5IC0gUiwgeSAtIEwpOwogICAgICAgIHVwZGF0ZSgxLCAwLCBuQ29tcC0xLCBwb3NbaSArIE5dLCAxKTsKCiAgICAgICAgYmFkW2ldID0gY3VyOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBOOyBpKyspewogICAgICAgIGNvdXQgPDwgdG90YWwgLSBiYWRbaV0gPDwgJyAnOwogICAgfQoKICAgIHJldHVybiAwOwp9