//
// main.cpp
// order
//
// Created by Vlad Calomfirescu on 14.05.2021.
//
#include <iostream>
#include <fstream>
using namespace std;
#define MAX 16
ifstream fin("order.in");
ofstream fout("order.out");
int a[3000],n,k,k1,pos,rs;
void update(int idx, int val){
while(idx<=n){
a[idx]+=val;
idx+=idx&(-idx);
}
}
void find(){
for(int h=MAX;0<=h;h--){
if(k1+(1<<h)<n){
if(rs+a[k1+(1<<h)]<pos){
rs+=a[k1+(1<<h)];
k1+=(1<<h);
}
}
}
}
int main(){
fin>>n;
for(int i=1;i<=n;i++)
update(i,1);
k=2;
for(int i=1;i<=n;i++){
pos=(k+i-2)%(n-i+1)+1;
rs=0;
k1=0;
find();
k1++;
update(k1,-1);
fout<<k1<<" ";
k=pos;
}
return 0;
}