#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; __int128 n; __int128 sum(__int128 a, __int128 b){ __int128 k = a + b - 1LL; return (a + k)*b / 2LL; } __int128 __gcd(__int128 a, __int128 b){ if (a > b){ swap(a, b); } while (a){ b %= a; swap(a, b); } return b; } int main(){ scanf("%lld", &n); __int128 s = sum(1, n); __int128 ss = sum(1 + 1LL, n); ss = __gcd(s, ss); long long int ind = 1LL; long long int ans = 0; set S; while (ind*ind <= ss){ if (ss%ind == 0LL){ if (S.count(ind)){ } else{ S.insert(ind); ans += ind; } long long int ne = ss / ind; if (S.count(ne)){ } else{ S.insert(ne); ans += ne; } } ind++; } if (S.count(ss)){ } else{ ans += ss; } printf("%lld\n", ans); return 0; }