# correct n, t, x, y = map(int, input().split()) d = list(map(int, input().split())) d.sort() group_sizes: list[int] = [] for i in range(n): if i == 0 or d[i] - d[i - 1] > t: group_sizes.append(0) group_sizes[-1] += 1 group_sizes.sort(reverse=True) group_num_imos: list[int] = [0] * (n + 1) # |x....|x...|x..| x: グループ数が増加する点 size_sum = 0 for size in group_sizes: group_num_imos[size_sum + 1] += 1 size_sum += size for k in range(1, n + 1): group_num_imos[k] += group_num_imos[k - 1] ans = [min(x, y) * (group_num_imos[k] - 1) for k in range(1, n + 1)] print(*ans)