#include <iostream>
#include <bits/stdc++.h>
#define VMAX 10000005
#define INF 2147000000
using namespace std;
ifstream fin ("radixsort.in");
ofstream fout ("radixsort.out");
int numere[VMAX];
queue<int> grupe[2];
int main()
{
int n,a,b,c,m,i,j,k,t,q,nr,minim,maxim,st,dr,mij;
fin>>n>>a>>b>>c;
nr=0;
for(i=1;i<=n;i++)
{
nr=(a*nr+b)%c;
numere[i]=nr;
}
for(i=0;i<31;i++)
{
for(j=1;j<=n;j++)
{
if((numere[j]&(1<<i))==0)
grupe[0].push(numere[j]);
else
grupe[1].push(numere[j]);
}
for(j=1;grupe[0].size();j++)
{
numere[j]=grupe[0].front();
grupe[0].pop();
}
for(;grupe[1].size();j++)
{
numere[j]=grupe[1].front();
grupe[1].pop();
}
}
for(i=1;i<=n;i+=10)
fout<<numere[i]<<' ';
fout<<'\n';
return 0;
}