#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair P; typedef pair PP; const ll MOD=1e9+7; int main(){ int N; cin>>N; vector A(N); const int MAXA=1000000; vector cnt(MAXA+10); ll maxA=0; for(int i=0;i>A[i]; maxA=max(maxA,A[i]); cnt[A[i]]++; } vector sum(maxA+1); for(int g=1;g<=maxA;g++){ for(int j=g;j<=maxA;j+=g){ sum[g]+=cnt[j];//jはgの倍数 } } map ansg; for(int g=1;g<=maxA;g++){ //sumが同じならできるだけ大きいgがいい //ansg[sum[g]]=max(ansg[sum[g]],1LL*g); ansg[sum[g]]=g; } vector> t;//[数,その値] for(auto [num,g]:ansg){ t.emplace_back(num,g); } //t.emplace_back(make_pair(0LL,1LL<<30));//番兵 t.emplace_back(make_pair(1LL<<60,1LL)); //numが小さい順にソート sort(t.begin(),t.end()); /* for(int j=0;j<=maxA;j++){ cout<<"sum["<