#include using namespace std; unsigned long int s=0,r; map m; vector k; vector a; void SieveOfEratosthenes(int n) { a.push_back(2); bool prime[n+1]; memset(prime, true, sizeof(prime)); for (int p=3; p*p<=n; p+=2) { if (prime[p] == true) { for (int i=p*p; i<=n; i += 2*p) prime[i] = false; } } for (int p=3; p<=n; p+=2) if (prime[p]) a.push_back(p); } unsigned long int call1(unsigned long int q) { unsigned long int w=q+1; if(k[0]==q) return w; else { w=max(w,1+k[0]*call1(q/k[0])); return w; } } unsigned long int call(unsigned long int q) { if(m.find(q)!=m.end()) return m[q]; if(k.size()==1) { m[q]=call1(q); return m[q]; } int i,j=k.size(),f=0; unsigned long int w=q+1,p; for(int i=0;i> n; while(n--) { cin>>r; if(r==1) s+=1; else { p=r; k.clear(); for(i=0;i