#include using namespace std; #define rep(i,j,n) for(int i=j;i pi; template using vt = vector; template using vvt = vector>; i64 gcd(i64 n, i64 m) {return (m == 0? n : gcd(m, n % m));} i64 lcd(i64 n, i64 m) {return (n / gcd(n, m) * m);} int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int PrimeFactor(long long n) { int cnt = 0; for(long long i = 2; i * i <= n; ++i) { while(n % i == 0) { cnt++; n /= i; } } if(n != 1) cnt++; return cnt; } int FactorCount(long long n) { map res; for(long long i = 2; i * i <= n; ++i) { if(n % i == 0 && !res.count(i)) res[i] = 0; while(n % i == 0) { res[i]++; n /= i; } } if(n != 1) res[n] = 1; int fact = 1; for(auto &it : res) { fact *= (it.second + 1); } return fact; } int main() { cin.tie(0); ios::sync_with_stdio(false); int n, k; cin >> n >> k; int ans = -1, fact = 0; rep(i, 1, n) { if(FactorCount(i) > fact && PrimeFactor(gcd(n, i)) >= k) { ans = i; fact = FactorCount(i); } } cout << ans << endl; }