#include using namespace std; long long func(long long N,unordered_map &M) { if(N==1) return 1; auto it=M.find(N); long long ans=0; if(it==M.end()) { for(long long i=1;i*i<=N;i++) if(N%i==0) if(i==1) ans=max(ans,func(i,M)*(N/i)+1); else ans=max(ans,max(func(N/i,M)*i,func(i,M)*(N/i))+1); M.insert({N,ans}); } else ans=it->second; return ans; } int main() { int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } /* Enter your code here. Print output to STDOUT */ long long ans=0; unordered_map M; for(int i=0;i