#include using namespace std; #define ll long long #define slld(x) scanf("%lld", &x) #define plld(x) printf("%lld\n", x) #define nl putchar('\n') #define ft first #define sd second #define mp make_pair #define pb push_back const ll MAX = (ll)(1e6+8); const ll MOD = (ll)(1e9 + 7); const ll inf = (ll)(1e15); ll sp[MAX]; vector prime; void sieve() { ll i, j; memset(sp, 0, sizeof sp); sp[0] = sp[1] = 1; for(i = 2; i < MAX; i++) { if(!sp[i]) { sp[i] = i; for(j = i+i; j < MAX; j += i) { if(!sp[j]) { sp[j] = i; } } } } for(i = 2; i < MAX; i++) { if(sp[i] == i) { prime.pb(i); } } } ll fac(ll num){ if(num == 1) return 1; ll tot = 0, i, j, k, prod = 1; vector fact; k = num; for(i=0; i=0; i--){ k = num; while(k%fact[i] == 0){ k /= fact[i]; prod *= fact[i]; tot += prod; } } return tot; } int main() { sieve(); ll n, i, j, ans=0; slld(n); for(i=0; i