module main; import std; // https://qiita.com/LorseKudos/items/9eb560494862c8b4eb56 より // 整数nの約数を列挙する long[] divisors(long n) { long[] lowerDivisors, upperDivisors; long i = 1; for (; i * i <= n; i++) { if (n % i != 0) continue; lowerDivisors ~= i; if (i != n / i) upperDivisors ~= n / i; } return lowerDivisors ~ upperDivisors.reverse; } void main() { // 入力 long N = readln.chomp.to!long; // 答えの計算 if (N % 2 == 0) N /= 2; auto D = divisors(N); // 答えの出力 writeln(D.sum); }