#include<iostream>
using namespace std;
/********** Begin **********/
// 定义全局变量,结构体,函数等
struct Node {
int data;
Node* next;
Node* pre;
};
Node* createCycleList()
{
Node* root = (Node*)malloc(sizeof(Node));
root->next = root;
root->pre = root;
return root;
}
void insert(Node* root, Node* node) {
Node* pre = root->pre;
pre->next = node;
node->next = root;
root->pre = node;
node->pre = pre;
}
void travel(Node* root) {
Node* p = root;
if (p == NULL)
return;
do {
printf("%d ", p->data);
p = p->next;
} while (p != root);
}
Node* Joesseff(Node* root, int step) {
Node* p = root;
Node* q;
if (p == NULL)
return NULL;
while (p->next != p) {
for (int i = 0; i < step; i++)
{
p = p->next;
}
q = p->next;
p->pre->next = p->next;
p->next->pre = p->pre;
free(p);
p = q;
}
return p;
}
void freeCycleList(Node* root) {
Node* pre = root->pre;
pre->next = NULL;
while (root != NULL) {
pre = root;
root = root->next;
free(pre);
}
}
/********** End **********/
int main(){
/********** Begin **********/
Node* root = (Node*)malloc(sizeof(Node));
int n, step;
cin >> n;
cin >> step;
root->data = 1;
root->next = root;
root->pre = root;
for (int i = 2; i <= n; i++) {
Node * node = (Node*)malloc(sizeof(Node));
node->data = i;
insert(root, node);
}
root = Joesseff(root, step);
cout << root->data;
/********** End **********/
freeCycleList(root);
return 0;
}