#include #include using namespace std; int main(){ using ll=long long; int m=5010; int n; cin>>n; vector c(m+1); for (int i=0;i>a; c[a]++; } int l=0,r=n+1; while (r-l>1){ int mid=(l+r)/2; atcoder::mf_graph g(m*2+2); int s=0,t=m*2+1; for (int i=1;i<=m;i++) g.add_edge(s,i,c[i]); for (int i=1;i<=mid;i++) g.add_edge(m+i,t,1); for (int i=1;i<=mid;i++){ for (int j=i;j<=m;j+=i){ g.add_edge(j,m+i,1); } } int f=g.flow(s,t); if (f==mid) l=mid; else r=mid; } cout<