#include <cstdio>
#include <cstdlib>
FILE*f=fopen("order.in","r");
FILE*g=fopen("order.out","w");
int n,arb[300000],m,val,pos,maxim,a,b;
int max(int a,int b)
{
if (a>b)
return a;
return b;
}
void update(int nod,int st,int dr,int pos,int val)
{
int mij;
if (st==dr)
{
arb[nod]=val;
return;}
mij=(st+dr)/2;
if (pos<=mij)
update(2*nod,st,mij,pos,val);
else
update(2*nod+1,mij+1,dr,pos,val);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void query(int nod,int st,int dr)
{
int mij;
if (st == dr)
{
pos=st;
return;}
mij=(st+dr)/2;
if (arb[2*nod]>=val)
query(2*nod,st,mij);
else
{ val-=arb[2*nod];
query(2*nod+1,mij+1,dr);}
}
int main()
{
int i,urm;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++)
{
pos=i;
update(1,1,n,i,1);
}
urm=1;
for (i=1;i<=n;i++)
{
urm=(urm+i+arb[1])%arb[1];
if (urm==0) urm=arb[1];
val=urm;
query(1,1,n);
update(1,1,n,pos,0);
fprintf(g,"%d",pos);
urm--;
}
return 0;
}