#include<bits/stdc++.h>
#define p u / v
using namespace std;
int n, m, q, u, v, t, a[100010];
queue<int> A, B, C;
int main() {
scanf("%d%d%d%d%d%d", &n, &m, &q, &u, &v, &t);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
sort(a + 1, a + n + 1);
reverse(a + 1, a + n + 1);
for (int i = 1; i <= n; i++) A.push(a[i]);
int d = 0;
for (int i = 1; i <= m; i++) {
int x = -2e9;
if (A.size()) x = max(x, A.front() + d);
if (B.size()) x = max(x, B.front() + d);
if (C.size()) x = max(x, C.front() + d);
if (A.size() && x == A.front() + d) A.pop();
else if (B.size() && x == B.front() + d) B.pop();
else if (C.size() && x == C.front() + d) C.pop();
if (i % t == 0) printf("%d ", x);
d += q;
B.push(x * p - d), C.push(x - x * p - d);
}
putchar('\n');
int i = 0;
while (A.size() || B.size() || C.size()) {
++i;
int x = -2e9;
if (A.size()) x = max(x, A.front() + d);
if (B.size()) x = max(x, B.front() + d);
if (C.size()) x = max(x, C.front() + d);
if (A.size() && x == A.front() + d) A.pop();
else if (B.size() && x == B.front() + d) B.pop();
else if (C.size() && x == C.front() + d) C.pop();
if (i % t == 0) printf("%d ", x);
}
return 0;
}