#include <cstdio>
#include <map>
long long n;
int X, K;
int x;
std::map<int, int> map;
int len;
int main() {
#ifdef LOCAL
freopen("!input.in", "r", stdin);
freopen("!output.out", "w", stdout);
#else
freopen("zhuan.in", "r", stdin);
freopen("zhuan.out", "w", stdout);
#endif
scanf("%lld %d %d", &n, &X, &K);
for (long long i = 1; i <= n; ++i) {
x = x + X - (x + X) / K;
if (map[x]) {
len = i - map[x];
break;
}
map[x] = i;
if (i == n) {
printf("%d", x);
return 0;
}
}
n = n % len;
for (long long i = 1; i <= n; ++i) {
x = x + X - (x + X) / K;
}
printf("%d", x);
return 0;
}