#include"bits/stdc++.h" using namespace std; using ll = long long; using ld = long double; using pii = pair; using pll = pair; #define FOR(k,m,n) for(ll (k)=(m);(k)<(n);(k)++) #define REP(i,n) FOR((i),0,(n)) #define WAITING(str) int str;std::cin>>str; #define DEBUGING(str) cout<< #str << " " str< prime_factorization(int n) { map res; int check = 2; while (check*check <= n) { if (n%check == 0) { n /= check; if (res.find(check) == res.end())res[check] = 0; res[check]++; } else { check++; } } if (n != 1) { if (res.find(n) == res.end())res[n] = 0; res[n]++; } //sort(res.begin(), res.end()); return res; } int count_same_prime(map primes, map target) { int res = 0; for (auto itr = primes.begin(); itr != primes.end(); ++itr) { int num = itr->first; int cnt = itr->second; if (target.find(num) == target.end())continue; int cnt2 = target[num]; res += min(cnt, cnt2); } return res; } int count_division(map primes) { int res = 1; for (auto itr = primes.begin(); itr != primes.end(); ++itr) { int tmp = (itr->second) + 1; res *= tmp; } return res; } int N, K; int main() { cin >> N >> K; int res = -1; int score = -1; auto target = prime_factorization(N); FOR(i, 1, N) { if (i == 24) { cerr< primes = prime_factorization(i); int cnt = count_same_prime(target, primes); if (cnt < K)continue; int nscore = count_division(primes); if (nscore > score) { res = i; score = nscore; } } cout << res << endl; //cin>>N; return 0; }