#include<bits/stdc++.h>
using namespace std;
using ll = long long;

const ll N = 3e5; 
vector<ll> primes;         // 存储筛出的所有质数
vector<bool> is_prime(N + 1, 1); // 标记是否为质数,初始默认是质数


int main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

    ll n;
    cin >> n;
    if(n==1){
        cout<<1;
        return 0;
    }
    unordered_map<ll,ll>m;

    is_prime[0]=0;
    is_prime[1]=0;
    for(ll i=2;i<=n;i++){
        if(is_prime[i]){
            primes.push_back(i);
        }
        for(auto p:primes){
            if(i*p>n)break;
            is_prime[i*p]=0;
            m[i*p]=p;
            if(i%p==0)break;
        }
    }

    ll ans=0;
    while(!is_prime[n]){
        ans+=m[n];
        n/=m[n];
    }
    ans+=n;
    cout<<ans;
    
    return 0;
}