Cod sursa(job #763923)
#include<cstdio>
using namespace std;
int e[1000001],d[1000001],a[1000001], b[1000001], c[1000001];
int main(void){
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int n,i,j,aux;
scanf("%d%d%d%d",&n ,&a[1],&b[1],&c[1]);
for (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;
if (a[i]>b[i]){aux=a[i]; a[i]=b[i]; b[i]=aux;}
}
for (i=n-1; i>0; --i){
for (j=a[i]; j<=b[i];)
if (e[j]==0) {e[j]=c[i]; d[j]=b[i]+1; ++j; }
else j=d[j];
}
for (i=1; i<n; ++i) printf("%d\n",e[i]);
return(0);
}