#include <stdio.h>
#include <fstream>
#include <algorithm>
#include <vector>
#define NMAX 10000005
using namespace std;
ifstream in("radixsort.in");
ofstream out("radixsort.out");
int N, A, B, C;
int input[NMAX], output[NMAX];
void CountingSort(int input[], long long exp){
long long count[10] = {0};
for(int i = 1; i <= N; ++i)
++count[(input[i]/exp)%10];
for(int i = 1; i < 10; ++i)
count[i] += count[i-1];
for(int i = N; i > 0; --i){
output[count[(input[i]/exp)%10] - 1] = input[i];
--count[(input[i]/exp)%10];
}
for(int i = 1; i <= N; ++i){
input[i] = output[i-1];
}
}
void RadixSort(int input[]){
long long max = *max_element(input+1, input+N);
for(long long exp = 1; max/exp > 0; exp *= 10)
CountingSort(input, exp);
for(int i = 1; i <= N; i += 10)
out << input[i] << ' ';
}
int main(){
in >> N >> A >> B >> C;
input[0] = 0;
input[1] = B;
for(int i = 2; i <= N; ++i)
input[i] = (1LL * A * input[i-1] + B) % C;
RadixSort(input);
return 0;
}