#include<cstdio>
using namespace std;
#define max_n 1000010
FILE*f = fopen("curcubeu.in" , "r");
FILE*g = fopen("curcubeu.out" , "w");
int n , A[max_n] , B[max_n] , C[max_n] , tmp;
int st , dr , Color[max_n] , Jump[max_n];
void read(){
fscanf(f , "%d%d%d%d" , &n , &A[1] , &B[1] , &C[1] );
}
int minim( int a , int b ){
return a < b ? a : b;
}
int maxim( int a , int b ){
return a > b ? a : b;
}
int main(){
read();
for( int i = 2 ; i < n ; i++ ){
A[i] = ( (long long)A[i-1] * i ) % n;
B[i] = ( (long long)B[i-1] * i ) % n;
C[i] = ( (long long)C[i-1] * i ) % n;
}
for( int i = n - 1 ; i >= 1 ; i-- ){
st = minim( A[i] , B[i] );
dr = maxim( A[i] , B[i] );
while( st <= dr ){
if( Jump[st] != 0 ){
tmp = Jump[st];
Jump[st] = maxim(dr + 1 , Jump[st]);
st = tmp;
}
else{
Color[st] = C[i];
Jump[st] = dr + 1;
st++;
}
}
}
for( int i = 1 ; i < n ; i++ )
fprintf(g , "%d\n" , Color[i] );
return 0;
}