#include <iostream>
#include <map>
#include <set>
#include <vector>
#include <iostream>
#include <math.h>
#define FOR(a,b,c) for (s32(a)=(b);(a)<(s32)(c);(a)++)
using namespace std;
typedef int s32;
typedef long long int s64;
typedef long long int Int;
/*
Return sqrt(n). Ex:10->3
*/
s64 Sqrt(s64 n)
{
s64 s, t;
if (n <= 0) return 0;
s = 1; t = n;
while (s < t) { s <<= 1; t >>= 1; }
do {
t = s;
s = (n / s + s) >> 1;
} while (s < t);
return t;
}
s64 Naive(s64 n) {
s64 r = 0;
for (s64 a = 1; a <=n; a++) {
s64 s2 = (2 * a - 1)*(2 * a - 1) + 8 * n;
s64 s = Sqrt(s2);
if (s * s != s2 || s % 2 == 0) continue;
s64 m = (-2 * a + 1 + s) / 2;
if (m != 1) {
// cout << a << " " << m << endl;
r += a;
}
}
return r;
}
s64 Check(s64 n, s64 p, s64 q) {
s64 m = p, a;
if ((2 * n / m + 1 - m) % 2 == 0) {
a = (2 * n / m + 1 - m) / 2;
if (a >= 1 && m >= 2) {
// cout << a << " " << m << endl;
return a;
}
}
return 0;
}
s64 Smart(s64 n) {
s64 p, a, m, r = 0;
for (p = 2; p * p <= 2 * n; p ++) {
if ((n * 2) % p != 0) continue;
r += Check(n, p, 2 * n / p);
r += Check(n, 2 * n / p, p);
}
return r;
}
int main(int argc, char *argv[])
{
cout.precision(16);
s64 n;
cin >> n;
double r0 = Smart(n);
cout << r0 << endl;
// double r2 = Naive(n);
// cout << r2 << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXRoLmg+CiNkZWZpbmUgRk9SKGEsYixjKQkJZm9yIChzMzIoYSk9KGIpOyhhKTwoczMyKShjKTsoYSkrKykKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBpbnQJCQkJCQlzMzI7CnR5cGVkZWYgbG9uZyBsb25nIGludAkJCXM2NDsKdHlwZWRlZiBsb25nIGxvbmcgaW50ICAgCQlJbnQ7CgovKgoJUmV0dXJuIHNxcnQobikuIEV4OjEwLT4zCiovCnM2NCBTcXJ0KHM2NCBuKQp7CiAgczY0IHMsIHQ7CiAgaWYgKG4gPD0gMCkgcmV0dXJuIDA7CiAgcyA9IDE7ICB0ID0gbjsKICB3aGlsZSAocyA8IHQpIHsgIHMgPDw9IDE7ICB0ID4+PSAxOyAgfQogIGRvIHsKICAgIHQgPSBzOwogICAgcyA9IChuIC8gcyArIHMpID4+IDE7CiAgfSB3aGlsZSAocyA8IHQpOwogIHJldHVybiB0Owp9CgpzNjQgTmFpdmUoczY0IG4pIHsKCXM2NCByID0gMDsKCWZvciAoczY0IGEgPSAxOyBhIDw9bjsgYSsrKSB7CgkJczY0IHMyID0gKDIgKiBhIC0gMSkqKDIgKiBhIC0gMSkgKyA4ICogbjsKCQlzNjQgcyA9IFNxcnQoczIpOwoJCWlmIChzICogcyAhPSBzMiB8fCBzICUgMiA9PSAwKSBjb250aW51ZTsKCQlzNjQgbSA9ICgtMiAqIGEgKyAxICsgcykgLyAyOwoJCWlmIChtICE9IDEpIHsKLy8JCQljb3V0IDw8IGEgPDwgIiAiIDw8IG0gPDwgZW5kbDsKCQkJciArPSBhOwoJCX0KCX0KCXJldHVybiByOwp9CgpzNjQgQ2hlY2soczY0IG4sIHM2NCBwLCBzNjQgcSkgewoJczY0IG0gPSBwLCBhOwoJaWYgKCgyICogbiAvIG0gKyAxIC0gbSkgJSAyID09IDApIHsKCQlhID0gKDIgKiBuIC8gbSArIDEgLSBtKSAvIDI7CgkJaWYgKGEgPj0gMSAmJiBtID49IDIpIHsKLy8JCQljb3V0IDw8IGEgPDwgIiAiIDw8IG0gPDwgZW5kbDsKCQkJcmV0dXJuIGE7CgkJfQoJfQoJcmV0dXJuIDA7Cn0KCnM2NCBTbWFydChzNjQgbikgewoJczY0IHAsIGEsIG0sIHIgPSAwOwoJZm9yIChwID0gMjsgcCAqIHAgPD0gMiAqIG47IHAgKyspIHsKCQlpZiAoKG4gKiAyKSAlIHAgIT0gMCkgY29udGludWU7CgkJciArPSBDaGVjayhuLCBwLCAyICogbiAvIHApOwoJCXIgKz0gQ2hlY2sobiwgMiAqIG4gLyBwLCBwKTsKCX0KCXJldHVybiByOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBjb3V0LnByZWNpc2lvbigxNik7CiAgICBzNjQgbjsKCWNpbiA+PiBuOwoKCWRvdWJsZSByMCA9IFNtYXJ0KG4pOwoJY291dCA8PCByMCA8PCBlbmRsOwoKLy8JZG91YmxlIHIyID0gTmFpdmUobik7Ci8vCWNvdXQgPDwgcjIgPDwgZW5kbDsKfQ==