#ifndef LOCAL #include using namespace std; #define debug(...) (void(0)) #else #include "algo/debug.h" #endif #include void solve() { int N, A, B; cin >> N >> A >> B; vector X(N); for(int i = 0; i < N; i++) cin >> X[i]; atcoder::dsu uf(N); set st; for(int i = 0; i <= N; i++) st.insert(i); int l = 0, r = 0; for(int i = 0; i < N; i++) { while(l < N && X[l] - X[i] < A) l++; while(r < N && X[r] - X[i] <= B) r++; for(int j = l; j < r;) { if(j < N) { st.erase(j); uf.merge(i, j); } j = *st.lower_bound(j); } st.insert(l); st.insert(r); } for(int i = 0; i < N; i++) cout << uf.size(i) << endl; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int tt = 1; // std::cin >> tt; while (tt--) { solve(); } }