#include<iostream>
#include<malloc.h>
#define maxsize 50
using namespace std;
//结构体定义
typedef struct
{
int data[maxsize];
int front,rear;
}queue;
//循环队列初始化函数
void create(queue *&q)
{
q=(queue *)malloc(sizeof(queue));
q->front=q->rear=0;
}
//入队列函数
bool in(queue *&q,int e)
{
if((q->rear+1)%maxsize==q->front)
return false;
q->data[q->rear]=e;
q->rear=(q->rear+1)%maxsize;
return true;
}
//出队列函数
bool out(queue *&q,int &e)
{
if(q->front==q->rear)
return false;
e=q->data[q->front];
q->front=(q->front+1)%maxsize;
return true;
}
//约瑟夫环实现函数
void print(queue *q,int n)
{
create(q);
int i,e,j;
for(i=1;i<=n;i++)
in(q,i);
while(q->front!=q->rear)
{
for(j=0;j<3;j++)
{
if(j==2)
{
out(q,e);
cout<<e<<" ";
break;
}
out(q,e);
in(q,e);
}
}
}
int main()
{
queue *q;
int n; //n为从1开始到n的数的总数
cin>>n;
print(q,n);
return 0;
}