#include #include #include #include #include #include #include #include #include #include #define rep(i, a) REP(i, 0, a) #define REP(i, a, b) for(int i = a; i < b; ++i) typedef long long ll; typedef unsigned long long ull; typedef std::pair P; typedef std::pair PP; struct edge{ int to, time, cost; }; const double esp = 1e-9; struct Node{ int r = 0, l = 0; Node* parent = nullptr; std::vector child; }; ll n; /*Node node[100001]; void down(Node &n, int k){ n.r = k; int s = n.child.size(); if (s == 0)return; else{ rep(i, s)down(*n.child[i], k + 1); } } int main(){ std::cin >> n; rep(i, n){ int x, y; std::cin >> x >> y; node[x - 1].child.push_back(&node[y]); } rep(i, n){ int s = node[i].child.size(); if (){ int s = node[i] } } return 0; }*/ int main(){ ll ans = 0; std::cin >> n; n = (n % 2 == 0 ? n / 2 : n); for (ll i = 1; i * i <= n; ++i){ if (n % i == 0){ ans += i; ans += n / i; if (i == n / i)ans -= n / i; } } std::cout << ans << std::endl; return 0; }