#ifdef NACHIA #define _GLIBCXX_DEBUG #else #define NDEBUG #endif #include <iostream> #include <string> #include <vector> #include <algorithm> using i64 = long long; using u64 = unsigned long long; #define rep(i,n) for(i64 i=0; i<i64(n); i++) const i64 INF = 1001001001001001001; template<typename A> void chmin(A& l, const A& r){ if(r < l) l = r; } template<typename A> void chmax(A& l, const A& r){ if(l < r) l = r; } using namespace std; void testcase(){ i64 N, T, X, Y; cin >> N >> T >> X >> Y; vector<i64> D(N); rep(i,N) cin >> D[i]; sort(D.begin(), D.end()); vector<i64> A = {1}; rep(i,N-1){ if(D[i+1] - D[i] > T) A.push_back(0); A.back()++; } sort(A.rbegin(), A.rend()); i64 z = min(X,Y); vector<i64> ans(N+2); rep(i,A.size()-1) A[i+1] += A[i]; rep(i,A.size()-1) ans[A[i]+1] += z; rep(i,N) ans[i+1] += ans[i]; rep(i,N){ if(i) cout << " "; cout << ans[i+1]; } cout << "\n"; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); testcase(); return 0; }