// Nipun Poddar , CSE, MNNIT Allahabad #include #include #include #include #include #include #include #include #include #define in(n) scanf("%d",&n) #define in2(n,m) scanf("%d%d",&n,&m) #define in3(n,m,p) scanf("%d%d%d",&n,&m,&p) #define inll(n) scanf("%lld",&n) #define inll2(n,m) scanf("%lld%lld",&n,&m) #define out(n) printf("%d\n",n) #define out2(n,m) printf("%d %d\n",n,m) #define outll(n) printf("%lld\n",n) #define outll2(n,m) printf("%lld %lld\n",n,m) #define inc(n) scanf("%c",&n) #define minm(a,b) (a #define ppi pair #define REP(i, n) for(int i = 0; i < (n); i++) #define FOR(i, a, n) for(int i = a; i < n; i++) #define REV(i, a, n) for(int i = a; i > n; i--) #define FORALL(itr, c) for(itr = (c).begin(); itr != (c).end(); itr++) #define ALL(A) A.begin(), A.end() #define LLA(A) A.rbegin(), A.rend() //int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1}; //int dx[] = {1, 1, 1, 0, 0, -1, -1, -1}, dy[] = {1, 0, -1, 1, -1, 1, 0, -1}; #define chkbit(s, b) (s & (1< b)? a : b); } inline int max3(int a, int b, int c) { return max2(a, max2(b, c)); } long long gcd(long long a,long long b) { while(b) b^=a^=b^=a%=b; return a; } long long int power(long long int b,long long int e) { long long ans=1,temp; while(e>0) { if(e%2) ans=(ans*b)%MOD; b=(b*b)%MOD; e/=2; } return ans; } /* inline int next_int() { int n = 0; char c = getchar_unlocked(); while (!('0' <= c && c <= '9')) { c = getchar_unlocked(); } while ('0' <= c && c <= '9') { n = n * 10 + c - '0'; c = getchar_unlocked(); } return n; }*/ using namespace std; ll a[105]; map dp; ll funFunc(ll x) { //cout< > factor; ll ans=x+1; ll x1=x; //cout<<"-----------> "<1) factor.PB(MP(x1,1)); //cout< f=factor[j]; ll i=f.F; int cnt=1; while(cnt<=f.S) { if(i==x) break; ll tmp=x/i; if(!dp[i]) ans=maxm(ans,tmp*funFunc(i) + 1); else ans=maxm(ans,tmp*dp[i] + 1); tmp=i; if(!dp[x/i]) ans=maxm(ans,tmp*funFunc(x/i) + 1); else ans=maxm(ans,tmp*dp[x/i] + 1); i*=f.F; cnt++; } } dp[x]=ans; //cout<