#include using namespace std; using ll = long long; // #define int ll using PII = pair; #define FOR(i, a, n) for (ll i = (ll)a; i < (ll)n; ++i) #define REP(i, n) FOR(i, 0, n) #define ALL(x) x.begin(), x.end() template T &chmin(T &a, const T &b) { return a = min(a, b); } template T &chmax(T &a, const T &b) { return a = max(a, b); } template bool IN(T a, T b, T x) { return a<=x&&x T ceil(T a, T b) { return a/b + !!(a%b); } template vector make_v(size_t a) { return vector(a); } template auto make_v(size_t a,Ts... ts) { return vector(ts...))>(a,make_v(ts...)); } template typename enable_if::value==0>::type fill_v(T &t, const V &v) { t=v; } template typename enable_if::value!=0>::type fill_v(T &t, const V &v ) { for(auto &e:t) fill_v(e,v); } template ostream &operator <<(ostream& out,const pair& a){ out<<'('< ostream &operator <<(ostream& out,const vector& a){ out<<'['; for(T i: a) {out<> n >> k; ll t = n; vector mp(n+1); for(ll i=2; i*i<=t; ++i) { while(t%i==0) t/=i, mp[i]++; } if(t>1) mp[t]++; ll ma = 0, ans = 0; FOR(i, 1, n) { // iとnの共通素因数 ll num = 0; t = i; for(ll j=2; j*j<=t; ++j) { ll cnt = 0; while(t%j==0) t/=j, cnt++; num += min(cnt, mp[j]); } if(t>1) num += min(1LL, mp[t]); if(num < k) continue; // iの約数 t = i, num = 0; for(ll j=1; j*j<=i; ++j) { if(t%j==0) { num++; if(j*j != i) num++; } } if(num > ma || (num == ma && ans > i)) { ma = num; ans = i; } } cout << ans << endl; return 0; }