#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; } } return ret; }; std::vector A; std::set s; int p = 0; int cur = N, nxt; for (int i = 0; i < K; i++) { A.push_back(cur); s.insert(cur); nxt = denum(cur); if (s.count(nxt)) { while (p < A.size() && !s.count(A[p])) p++; int rem = (K - p) % (i - p); for (int _ = 0; _ < rem; _++) p++; std::cout << A[p] << '\n'; return 0; } cur = nxt; } std::cout << cur << '\n'; return 0; }