#include <stdio.h>
#include <stdlib.h>
int v[70001];
void form(int st,int dr,int pos)
{
if(st!=dr)
{
form(st,(st+dr)/2,pos*2);
form((st+dr)/2+1,dr,pos*2+1);
}
v[pos]=(dr-st)+1;
}
int verif(int st,int dr,int pos,int a,int b)
{
int s=0;
if(dr<a || b<st)
return 0;
else
{
if(a<=st && b>=dr)
return v[pos];
else{
if(a<=(st+dr)/2)
s+=verif(st,(st+dr)/2,pos*2,a,b);
if(b>=(st+dr)/2+1)
s+=verif((st+dr)/2+1,dr,pos*2+1,a,b);
return s;
}
}
}
int search(int st,int dr,int pos,int x)
{
int i;
if(st==dr)
return st;
else
{
if(v[pos*2]<x)
return search((st+dr)/2+1,dr,pos*2+1,x-v[pos*2]);
else
return search(st,(st+dr)/2,pos*2,x);
}
}
void update(int st,int dr,int pos,int x)
{
if(st!=dr)
{
if(x<=(st+dr)/2)
update(st,(st+dr)/2,pos*2,x);
else
update((st+dr)/2+1,dr,pos*2+1,x);
}
v[pos]--;
}
int main()
{
int i,n,el,k,z,x;
freopen("order.in","r",stdin);
freopen("order.out","w",stdout);
scanf("%d",&n);
form(1,n,1);
el=1;
for(i=1; i<=n; i++)
{
k=verif(1,n,1,el+1,n);
if(k>=(i-1)%v[1]+1)
{
z=verif(1,n,1,1,el);
k=(i-1)%v[1]+1;
k+=z;
x=search(1,n,1,k);
}
else
{
z=(i-1)%v[1]+1;
z-=k;
x=search(1,n,1,z);
}
printf("%d ",x);
update(1,n,1,x);
el=x;
}
return 0;
}