int remain(int n) {
bool* out = new bool[n];
for (int i = 0; i < n; i ++)
out[i] = false;
for (int rest = n, which = n - 1; rest > 1; rest --) {
int count = 3;
while (count) {
which ++;
if (which >= n) which = 0;
if (!out[which]) count --;
}
out[which] = true;
}
delete[] out;
return which;
}