#include <fstream>
using namespace std;
#define range(cnt, a, b, step, code) for(size_t cnt = a; cnt <= b; cnt += step){code;}
size_t N, A, B, C, v[10000001], aux[10000001];
int main()
{
ios_base::sync_with_stdio(false);
ifstream fin("radixsort.in");
ofstream fout("radixsort.out");
fin >> N >> A >> B >> C;
v[1] = B;
range(i, 2, N, 1, v[i] = (1LL * A * v[i - 1] + B) % C);
range(byte, 0, 3, 1,
size_t index[256];
range(i, 1, 255, 1, index[i] = 0);
range(i, 1, N, 1, index[ (v[i] >> (byte*8)) & 255 ]++);
range(i, 2, 255, 1, index[i] += index[i - 1]);
for(size_t i = N; i >= 1; i--) aux[ index[ (v[i] >> (byte*8)) & 255 ]-- ] = v[i];
range(i, 1, N, 1, v[i] = aux[i]);
);
range(i, 1, N, 10, fout << v[i] << ' ');
}