#include <bits/stdc++.h>
using namespace std;
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
#define N 10000000
const int putere = 8;
const int B = 256;
const int NC = 4;
int n, v[2][N], nr[B+2], poz[B+2];
int main() {
/*
v = {59, 14, 98, 38, 110, 80, 23, 2, 50, 71}
i) sortam dupa ultima cifra =>
v = {110, 80, 50, 71, 2, 23, 14, 98, 38, 59}
ii) ordonam dupa cifra zecilor =>
v = {2, 110, 14, 23, 38, 50, 59, 71, 80, 98}
iii) sortam dupa cifra sutelor =>
v = {2, 14, 23, 38, 50, 59, 71, 80, 98, 110}
--------------------------------------------
0 1 2 3 4 5 6 7 8 9
nr = {3, 1, 1, 1, 1, 0, 0, 0, 2, 1}
poz = {0, 3, 4, 5, 6, 7, 7, 7, 7, 9}
poz[i] = poz[i-1] + nr[i-1]; poz[0] = 0
--------------------------------------------
*/
std::ios_base::sync_with_stdio(false);
int a, c;
fin >> n >> a >> v[0][0] >> c;
for(int i = 1; i < n; ++i)
v[0][i] = (1ll * a * v[0][i-1] + v[0][0]) % c;
for(int k = 0, p = 1; k < NC; ++k, p *= B) {
for(int j = 0; j < B; ++j)
nr[j] = 0;
for(int i = 0; i < n; ++i)
nr[(v[k&1][i] >> (k*putere)) & (B-1)]++;
poz[0] = 0; for(int j = 1; j < B; ++j)
poz[j] = poz[j-1] + nr[j-1];
for(int i = 0; i < n; ++i)
v[(k+1)&1][poz[(v[k&1][i] >> (k*putere)) & (B-1)]++] = v[k&1][i];
}
for(int i = 0; i < n; i += 10)
fout << v[NC&1][i] << ' ';
return 0;
}