#include <bits/stdc++.h> #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<int, int>; template<class T>istream &operator>>(istream &is,vector<T> &v){for(auto &e:v)is>>e;return is;} template<class T>ostream &operator<<(ostream &os,const vector<T> &v){if(v.size()==0){os<<endl;}else{rep(i,v.size())os<<v[i]<<(i+1==v.size()?"\n":" ");}return os;} template<class T>istream &operator>>(istream &is,vector<vector<T>> &v){for(auto &e:v)is>>e;return is;} template<class T>ostream &operator<<(ostream &os,const vector<vector<T>> &v){if(v.size()==0){os<<endl;}else{for(auto &e:v)os<<e;}return os;} template<typename T>bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;} template<typename T>bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;} int main(){ int n; cin >> n; vector<int> ar(n); cin >> ar; vector<int> 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<P> 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; } }