#include using i64 = long long; using u64 = unsigned long long; using u32 = unsigned; using u128 = unsigned __int128; using i128 = __int128; const int MOD = 100003; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); i64 N, K; std::cin >> N >> K; K--; auto denum = [&](i64 num) -> i64 { i64 ret = 0; for (int i = 1; i <= num / i; i++) { if (num % i == 0) { ret += i; if (i != num / i) ret += num / i; ret %= MOD; } } return ret % MOD; }; std::vector A; std::map pos; int cur = N, nxt; for (int i = 0; i < K; i++) { A.push_back(cur); pos[cur] = i; nxt = denum(cur) % MOD; if (pos.count(nxt)) { int st = pos[nxt]; int len = i + 1 - st; int p = st + (K - st) % len; std::cout << A[p] << '\n'; return 0; } cur = nxt; } std::cout << cur << '\n'; return 0; }