#include<bits/stdc++.h>
#include<chrono>
using namespace std;
using namespace chrono;
typedef long long int lli;
typedef long long ll;
lli M=1000000007;
lli mod(lli a) { return ((a%M+M)%M);}
lli add(lli a,lli b) { return mod(mod(a)+mod(b));}
lli multiply(lli a,lli b) { return mod(mod(a)*mod(b));}
lli min(lli a,lli b) { if(a<b) return a; return b;}
lli max(lli a,lli b) { return (a>b)?a:b;}
lli modexpo(lli a,lli b){
lli res = 1;
while(b>0){
if(b&1) res = (res*a)%M;
a = (a*a)%M;
b/=2;
}
return res;
}
void solve(){
ll n;
cin>>n;
n*=2;
ll i=1;
ll ans=0;
while(true && i<n){
if(n%i==0){
ll a=i;
ll b=n/i;
// cout<<a<<":"<<b<<" ";
if(a>b) break;
ll j=(b-i-1);
if(j<0) break;
// ll t=2*n
// cout<<j<<" ";
if(j%2==0) ans+=2;
i++;
}
else if((i*i)>n) break;
else i++;
}
cout<<ans<<"\n";
}
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt", "r" ,stdin);
// freopen("output.txt", "w" ,stdout);
#endif
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// auto start1 = high_resolution_clock::now();
solve();
// int t;
// cin>>t;
// while(t--) solve();
// auto stop1 = high_resolution_clock::now();
// auto duration = duration_cast<microseconds>(stop1 - start1);
// #ifndef ONLINE_JUDGE
// cerr << "Time: " << duration.count() / 1000.0 << endl;
// cout<<duration.count()/1000.0<<endl;
// #endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8Y2hyb25vPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgY2hyb25vOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGxpOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCiAKbGxpIE09MTAwMDAwMDAwNzsKbGxpIG1vZChsbGkgYSkgeyByZXR1cm4gKChhJU0rTSklTSk7fSAKbGxpIGFkZChsbGkgYSxsbGkgYikgeyByZXR1cm4gbW9kKG1vZChhKSttb2QoYikpO30KbGxpIG11bHRpcGx5KGxsaSBhLGxsaSBiKSB7IHJldHVybiBtb2QobW9kKGEpKm1vZChiKSk7fQpsbGkgbWluKGxsaSBhLGxsaSBiKSB7IGlmKGE8YikgcmV0dXJuIGE7IHJldHVybiBiO30KbGxpIG1heChsbGkgYSxsbGkgYikgeyByZXR1cm4gKGE+Yik/YTpiO30KbGxpIG1vZGV4cG8obGxpIGEsbGxpIGIpewogICAgbGxpIHJlcyA9IDE7CiAgICB3aGlsZShiPjApewogICAgCWlmKGImMSkgcmVzID0gKHJlcyphKSVNOwogICAgCWEgPSAoYSphKSVNOwogICAgCWIvPTI7CiAgICB9CiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIHNvbHZlKCl7CiAgbGwgbjsKICBjaW4+Pm47CiAgbio9MjsKICBsbCBpPTE7CiAgbGwgYW5zPTA7CiAgd2hpbGUodHJ1ZSAmJiBpPG4pewogICAgaWYobiVpPT0wKXsKICAgICAgbGwgYT1pOwogICAgICBsbCBiPW4vaTsKICAgICAgLy8gY291dDw8YTw8IjoiPDxiPDwiICI7CiAgICAgIGlmKGE+YikgYnJlYWs7CiAgICAgIAogICAgICBsbCBqPShiLWktMSk7CiAgICAgIGlmKGo8MCkgYnJlYWs7CiAgICAgIC8vIGxsIHQ9MipuCiAgICAgIC8vIGNvdXQ8PGo8PCIgIjsKICAgICAgaWYoaiUyPT0wKSBhbnMrPTI7CiAgICAgIGkrKzsKICAgIH0KICAgIGVsc2UgaWYoKGkqaSk+bikgYnJlYWs7CiAgICBlbHNlIGkrKzsKICB9CiAgY291dDw8YW5zPDwiXG4iOwp9CiAKIAppbnQgbWFpbigpewogICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKCQlmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIgLHN0ZGluKTsKCQkvLyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciICxzdGRvdXQpOwoJICAjZW5kaWYKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKICAgIGNvdXQudGllKE5VTEwpOwogICAgLy8gYXV0byBzdGFydDEgPSBoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgc29sdmUoKTsKICAgIC8vIGludCB0OwogICAgLy8gY2luPj50OwogICAgLy8gd2hpbGUodC0tKSBzb2x2ZSgpOwogICAgLy8gYXV0byBzdG9wMSA9IGhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CgkgIC8vIGF1dG8gZHVyYXRpb24gPSBkdXJhdGlvbl9jYXN0PG1pY3Jvc2Vjb25kcz4oc3RvcDEgLSBzdGFydDEpOwogICAgLy8gI2lmbmRlZiBPTkxJTkVfSlVER0UKCQkvLyBjZXJyIDw8ICJUaW1lOiAiIDw8IGR1cmF0aW9uLmNvdW50KCkgLyAxMDAwLjAgPDwgZW5kbDsKCSAgLy8gY291dDw8ZHVyYXRpb24uY291bnQoKS8xMDAwLjA8PGVuZGw7CiAgICAvLyAjZW5kaWYKICAgIHJldHVybiAwOwp9