#include <bits/stdc++.h>
using namespace std;
const int dim=1<<17;
int v[10000001],n,aux[10000001];
int COUNT[10];
char next_ch()
{
static int bp=dim;
static char buff[dim];
if(bp==dim)
{
bp=0;
fread(buff,1,dim,stdin);
}
return buff[bp++];
}
void get(int &a)
{
a=0;
char ch;
do
{
ch=next_ch();
}
while(ch<'0'||'9'<ch);
do
{
a=a*10+ch-'0';
ch=next_ch();
}
while('0'<=ch&&ch<='9');
}
void radix_sort(int val)
{
int i;
for(i=0; i<10; i++)
COUNT[i]=0;
for(i=1; i<=n; i++)
COUNT[(v[i]/val)%10]++;
for(i=1; i<10; i++)
COUNT[i]+=COUNT[i-1];
for(i=n; i>=1; i--)
aux[COUNT[(v[i]/val)%10]--]=v[i];
for(i=1; i<=n; i++)
v[i]=aux[i];
}
int main()
{
#ifndef HOME
freopen("radixsort.in","r",stdin);
freopen("radixsort.out","w",stdout);
#endif // HOME
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int i,max1=0,a,b,c;
cin>>n>>a>>b>>c;
v[1]=b;
for(i=2; i<=n; i++)
{
v[i] = (a * v[i-1] + b) % c;
max1=max(max1,v[i]);
}
for(int val=1; val<=max1; val*=10)
radix_sort(val);
for(i=1; i<=n; i+=10)
cout<<v[i]<<" ";
return 0;
}