#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;
}