#include<iostream>
#include<queue>
#include<ctime>
using namespace std;
int main(){
queue<int>Q[10];
srand(time(NULL));
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
int A[1000],n,a,b,c;
cin>>n>>a>>b>>c;
A[1]=b;
for(int i=2;i<=n;i++) A[i]=(a*A[i-1]+b)%c;
n++;
for(int p=1;p<=10000000;p*=10){
for(int i=0;i<n;i++){
Q[(A[i]/p)%10].push(A[i]);
}
int x=0;
for(int k=0;k<10;k++){
while(!Q[k].empty()){
A[x++]=Q[k].front();
Q[k].pop();
}
}
}
for(int i=1;i<n;i=i+10) cout<<A<<" ";
}