#include #include #define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++) using namespace atcoder; using namespace std; typedef long long ll; template ostream &operator<<(ostream &os, const vector &v) { int n = v.size(); rep(i, 0, n) { os << v[i] << " \n"[i == n - 1]; } return os; } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); int n, t, x, y; cin >> n >> t >> x >> y; x = min(x, y); vector a(n); rep(i, 0, n) cin >> a[i]; sort(a.begin(), a.end()); vector gake; gake.push_back(0); rep(i, 0, n - 1) { if (a[i + 1] - a[i] > t) { gake.push_back(i + 1); } } gake.push_back(n); vector kat; rep(i, 0, gake.size() - 1) { kat.push_back(gake[i + 1] - gake[i]); } sort(kat.rbegin(), kat.rend()); vector ans(n); for (int i = n - 1; i >= 0; i--) { int p = kat.size() - 1; ans[i] = (ll)p * x; kat.back()--; if (kat.back() == 0) { kat.pop_back(); } } cout << ans; }