#include <iostream>
#include <cstdlib>
struct Pessoa {
int num;
Pessoa *prox;
Pessoa(int x, Pessoa *p) {
num = x;
prox = p;
}
};
int main(int argc, char *argv[]) {
//'a' recebe primeira pessoa criada
//e 'a' é linkado para si mesmo
//depois 'b' é criado apontado para 'a'
int N = atoi(argv[1]), M = atoi(argv[2]);
Pessoa *a = new Pessoa(1, 0);
a->prox = a;
Pessoa *b = a;
// Aloca na memória todas as pessoas
// e 'b' recebe a última(enésima pessoa)
// pois a contagem começa pela primeira('a')
for (int i = 2; i <= N; ++i)
b = (b->prox = new Pessoa(i, a));
// Loop enquanto 'b' não estiver apontado
// o próximo para ele mesmo
while (b != b->prox) {
// 'b' recebe a emésima pessoa
for (int i = 1; i < M; ++i)
b = b->prox;
a = b->prox;
b->prox = a->prox;
delete a; // 'a' é morto =/
}
// O sobrevivente _o/
std::cout << b->num << std::endl;
}