import std.stdio, std.conv, std.string;
import std.array, std.range, std.algorithm, std.container;
import std.math, std.random, std.bigint, std.datetime, std.format;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }

int DEBUG_LEVEL = 0;
void print()(){ writeln(""); }
void print(T, A ...)(T t, lazy A a){ write(t), print(a); }
void print(int level, T, A ...)(T t, lazy A a){ if(level <= DEBUG_LEVEL) print(t, a); }

void main(string[] args){
	if(args.length > 1 && args[1] == "-debug"){
		if(args.length > 2 && args[2].isNumeric) DEBUG_LEVEL = args[2].to!int;
		else DEBUG_LEVEL = 1;
	}
	
	long n = read.to!long;
	
	long ans;
	for(long k = 1; k * k <= n; k ++){
		if(n % k != 0) continue;
		long m = n / k - 1;
		if(m > k) ans += m;
	}
	ans.writeln;
}

/*

n = m k + k
  = (m + 1)k, 0 <= k < m

kはnの約数
そのうちで n / k - 1 = m としたとき k < m であるようなものを言えばよい

約数は素因数分解ではなくて割ってみるでよい

*/
