#include<cstdio>
#include<vector>
using namespace std;
vector<int> zeros, ones;
void radix(vector<int> &a) {
for (int bit = 0; bit <= 31; bit++) {
zeros.clear();
ones.clear();
for (auto number : a) {
if (((number >> bit) & 1) == 0) {
zeros.push_back(number);
}
else {
ones.push_back(number);
}
}
for (int i = 0; i < zeros.size(); i++) {
a[i] = zeros[i];
}
for (int i = 0; i < ones.size(); i++) {
a[zeros.size() + i] = ones[i];
}
}
}
int main() {
freopen("radixsort.in", "r", stdin);
freopen("radixsort.out", "w", stdout);
int n, a, b, c;
scanf("%d %d %d %d", &n, &a, &b, &c);
vector<int> v(n + 1, 0);
v[1] = b;
for (int i = 2; i <= n; i++) {
v[i] = (a * v[i - 1] + b) % c;
}
radix(v);
for (int i = 1; i < v.size(); i += 10) {
printf("%d ",v[i]);
}
return 0;
}