#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
ifstream cin("radixsort.in");
ofstream cout("radixsort.out");
int N;
unsigned long long A,B,C;
vector<unsigned> V,Count,Rez,Index;
int main(){
cin>>N>>A>>B>>C;
V.reserve(N+5); Count.assign(256,0); Index.assign(256,0); Rez.reserve(N+5);
V[1]=B;
for(int i=2;i<=N;++i)
V[i]=(A*V[i-1]+B)%C;
unsigned F=256,B=1;
for(int i=1;i<=4;++i,F*=256,B*=256){
for(int j=1;j<=N;++j)
++Count[V[j]%(F-1)/B];
Index[0]=1;
for(int j=1;j<256;++j)
Index[j]=Index[j-1]+Count[j-1];
for(int j=1;j<=N;++j)
Rez[Index[V[j]%(F-1)/B]++]=V[j];
for(int j=1;j<=N;j++)
V[j]=Rez[j];
Count.assign(256,0); Index.assign(256,0);
}
for(int i=1;i<=N;i+=10)
cout<<V[i]<<' ';
}