#include<bits/stdc++.h>
typedef struct QueueNode{
int data;
QueueNode *next;
}QueueNode,*QP;
typedef struct{
QP rear;
QP front;
}MyQueue;
void Init(MyQueue &Q)
{
Q.rear=Q.front=(QP)malloc(sizeof(QueueNode));
if(!Q.rear)
exit(-1);
Q.front->next=NULL;
}
int Empty(MyQueue Q)
{
return Q.front==Q.rear;
}
void Push(MyQueue &Q,int aim)
{
QP q=(QP)malloc(sizeof(QueueNode));
q->data=aim;
q->next=NULL;
Q.rear->next=q;
Q.rear=q;
}
int Front(MyQueue Q)
{
if(Empty(Q))
exit(-1);
return Q.front->next->data;
}
void Pop(MyQueue &Q)
{
if(Empty(Q))
{
printf("The Queue is empty\n");
exit(-1);
}
QP p=Q.front->next;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
free(p);
}
int Size(MyQueue Q)
{
QP p=Q.front;
int cnt=0;
while(p!=Q.rear)
{
cnt++;
p=p->next;
}
return cnt;
}
void DestroyQueue(MyQueue &Q)
{
while(Q.front)
{
Q.rear=Q.front->next;
free(Q.front);
Q.front=Q.rear;
}
}
void dis(MyQueue Q)
{
QP q=Q.front;
while(q->next)
{
q=q->next;
printf("%d ",q->data);
}
printf("\n");
}
int main()
{
MyQueue Q;
Init(Q);
int n,rank,surplus;
int tep;
scanf("%d%d%d",&n,&rank,&surplus);
for(int i=1;i<=n;i++)
Push(Q,i);
printf("%d\n",Size(Q));
while(Size(Q)>surplus)
{
for(int i=1;i<rank;i++)
{
tep=Front(Q);
Push(Q,tep);
Pop(Q);
}
printf("%d ",Front(Q));
Pop(Q);
}
DestroyQueue(Q);
return 0;
}
#include<bits/stdc++.h>
const int maxsize=10000;
typedef struct{
int front,rear;
int *base;
}MyQueue;
void Init(MyQueue &Q)
{
Q.base = (int *)malloc(sizeof(int)*maxsize);
Q.front = Q.rear = 0;
if(!Q.base)
exit(-1);
}
bool Full(MyQueue Q)
{
return (Q.rear+1)%maxsize==Q.front;
}
int Size(MyQueue Q)
{
return (Q.rear-Q.front+maxsize)%maxsize;
}
bool Empty(MyQueue Q)
{
return Q.rear == Q.front;
}
void Push(MyQueue &Q,int aim)
{
if(Full(Q))
{
printf("The Queue is already full\n");
exit(-1);
}
Q.rear=(Q.rear+1)%maxsize;
Q.base[Q.rear]=aim;
}
void Pop(MyQueue &Q)
{
if(Empty(Q))
exit(-1);
Q.front=(Q.front+1)%maxsize;
}
int Front(MyQueue Q)
{
if(Empty(Q))
exit(-1);
return Q.base[Q.front+1];
}
void Destroy(MyQueue &Q)
{
free(Q.base);
}
void solve(int n,int rank,int surplus)
{
MyQueue Q;
Init(Q);
for(int i=1;i<=n;i++)
Push(Q,i);
while(Size(Q)>surplus)
{
for(int i=1;i<rank;i++)
{
Push(Q,Front(Q));
Pop(Q);
}
printf("%d ",Front(Q));
Pop(Q);
}
Destroy(Q);
}
int main()
{
int n,rank,surplus;
scanf("%d%d%d",&n,&rank,&surplus);
solve(n,rank,surplus);
return 0;
}