#include <bits/stdc++.h>
using namespace std;
// 链表结构体定义
typedef struct node {
int id;
struct node *next;
} *pNode, Node;
// 循环链表头节点
pNode head;
// 按顺序删除的前n-1个节点的id构成的列表
vector<int> ans;
int main() {
// n个节点,判断值k
int n, k;
cin >> n >> k;
// 构造包含n个节点的循环链表
head = (pNode)malloc(sizeof(Node));
pNode now = head;
for (int i = 1; i <= n; ++i) {
pNode a = (pNode)malloc(sizeof(Node));
a->id = i;
now->next = a;
now = now->next;
}
now->next = head->next;
// pc为计数器
int pc = 0;
now = head;
// 当前节点的上一个节点
pNode last = nullptr;
// 程序执行到链表只剩下最后一个节点为止
while (n > 1) {
pc++;
last = now;
now = now->next;
// 当计数器pc = k时从循环链表中删除当前节点,并把被删除的节点的id添加到答案列表ans中
if (pc == k) {
last->next = now->next;
n--;
pc = 0;
ans.push_back(now->id);
}
}
// 输出最终答案
for (auto id : ans) {
cout << id << ' ';
}
return 0;
}