#define rep(i, n) for (int i = 0; i < (int)(n); i++) #define ALL(v) v.begin(), v.end() typedef long long ll; #include using namespace std; class Dis{ public: vector rank,p; Dis(int s){ rank.resize(s,0); p.resize(s,0); rep(i,s) makeSet(i); } void makeSet(int x){ p[x]=x; rank[x]=0; } bool same(int x,int y){ return findSet(x)==findSet(y); } void unite(int x,int y){ link(findSet(x),findSet(y)); } void link(int x,int y){ if(rank[x]>rank[y]) p[y]=x; else{ p[x]=y; if(rank[x]==rank[y]) rank[y]++; } } int findSet(int x){ if(x != p[x]) p[x]=findSet(p[x]); return p[x]; } }; int main(){ ll n,a,b; cin>>n>>a>>b; Dis ds=Dis(n); vector A(n); rep(i,n) cin>>A[i]; rep(i,n){ auto it1=lower_bound(ALL(A),A[i]+a); auto it2=upper_bound(ALL(A),A[i]+b); if(it1 m; rep(i,n){ m[ds.findSet(i)]++; } rep(i,n){ cout<