#include <vector>
class Joseph {
public:
int getResult(int n) {
// write code here
vector<int> people;
for (int i = 1; i <= n; i++) people.emplace_back(i);
int round = 1;
int idx = 0;
while (people.size() > 1) {
vector<int> remain;
int count = 1;
for (int i = 0; i < people.size(); ++i) {
int pos = (idx + i) % people.size();
if (count == 1) {
remain.emplace_back(people[pos]);
}
++count;
if (count > round + 1) count = 1;
}
people = remain;
idx = people.size() - 1;
++round;
}
return people.back();
}
};