#include<stdio.h>
#define Nm (1<<20)
#define md (l+r>>1)
#define ls (n<<1)
#define rs (n<<1|1)
#define min(a,b) ((a)<(b)?(a):(b))
int C[Nm<<1],T[Nm<<1];
int x,y,c,i;
void update(int n, int l, int r)
{
if(x<=l && r<=y)
{
C[n]=c;
T[n]=i;
}
else
{
if(x<=md)
update(ls,l,md);
if(y>md)
update(rs,md+1,r);
}
}
int ans,t;
void query(int n, int l, int r)
{
if(T[n]>t)
{
t=T[n];
ans=C[n];
}
if(l<r)
if(i<=md)
query(ls,l,md);
else
query(rs,md+1,r);
}
int main()
{
int n,a,b;
freopen("curcubeu.in","r",stdin);
scanf("%d%d%d%d",&n,&a,&b,&c);
i=1; x=min(a,b); y=a+b-x;
update(1,1,n-1);
for(i=2;i<n;++i)
{
a=(long long)a*i%n;
b=(long long)b*i%n;
c=(long long)c*i%n;
x=min(a,b); y=a+b-x;
update(1,1,n-1);
}
freopen("curcubeu.out","w",stdout);
for(i=1;i<n;++i)
{
t=0; ans=0; query(1,1,n-1);
printf("%d\n",ans);
}
return 0;
}