#include using namespace std; using lint = long long; template using V = vector; template using VV = V< V >; template map factorize(Z n) { map res; for (Z i = 2; i * i <= n; ++i) while (n % i == 0) ++res[i], n /= i; if (n != 1) ++res[n]; return res; } template V divisor(Z n) { V res; Z i; for (i = 1; i * i < n; ++i) if (n % i == 0) res.push_back(i), res.push_back(n / i); if (i * i == n) res.push_back(i); sort(begin(res), end(res)); return res; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); int n, k; cin >> n >> k; int res = -1, mx = 0; for (int i = 1; i < n; ++i) { int g = __gcd(i, n); int s = 0; for (const auto& e : factorize(g)) s += e.second; if (s < k) continue; int sz = divisor(i).size(); if (sz > mx) { mx = sz; res = i; } } cout << res << '\n'; }