#include #define rep(i,n) for (int i = 0; i < int(n); ++i) #define repp(i,n,m) for (int i = m; i < int(n); ++i) using namespace std; using P = pair; templateistream &operator>>(istream &is,vector &v){for(auto &e:v)is>>e;return is;} templateostream &operator<<(ostream &os,const vector &v){if(v.size()==0){os<istream &operator>>(istream &is,vector> &v){for(auto &e:v)is>>e;return is;} templateostream &operator<<(ostream &os,const vector> &v){if(v.size()==0){os<bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;} templatebool chmax(T &a,const T &b){if(a> n; vector ar(n); cin >> ar; vector cnt(1000001,0); rep(i,n){ for (int d = 1; d * d <= ar[i]; d++){ if (ar[i] % d == 0){ cnt[d]++; if (d * d != ar[i]) cnt[ar[i] / d]++; } } } priority_queue

pque; repp(i,1000001,1) pque.push(P(cnt[i],i)); int ans = 0; rep(i,n){ while (!pque.empty() && pque.top().first >= n - i){ chmax(ans,pque.top().second); pque.pop(); } cout << ans << endl; } }