#include <iostream>
#include <typeinfo>
#include <stdio.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode* link;
}LNode,*LinkList;
void JOSEPHUS(int n,int k,int m){//n ,k ,m
LinkList p,r,List,cur;
// n
p=(LinkList)malloc(sizeof(LNode));
p->data=0;
p->link=p;
cur=p;
for (int i=1;i<n;i++)
{
LinkList t=(LinkList)malloc(sizeof(LNode));
t->data=i;
t->link=cur->link;
cur->link=t;
cur=t;
}
// , p
r=cur;
while(k--)
r=p,p=p->link;
// k m ,
while (n--)
{
for (int s=m-1;s--;r=p,p=p->link);
r->link=p->link;
printf("%d->",p->data);
free(p);
p=r->link;
}
}
int main(){
JOSEPHUS(13,4,2);
return 0;
}