 /*

                              Jai Shree Krishna !!
                                 Radhe Radhe !!
                                 
             उद्यमेन हि सिद्ध्यन्ति कार्याणि न मनोरथैः। नहि सुप्तस्य सिंहस्य मुखे प्रविशन्ति मृगाः।।
             
*/
   
   
#include <bits/stdc++.h>
using namespace std;
 
#define int long long
typedef long long ll;
#define loop(i,n)  for(int i=0;i<n;i++)
#define read(a) int a; cin >>a;
#define readarr(a,n) int a[n] ; for(int i=0;i<n;i++) cin >> a[i];
#define readmat(a,n,m) int a[n][m]; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin >> a[i][j];
#define pb push_back
#define ff first
#define ss second
#define vi vector<int>
#define pi pair<int,int>
#define vvi vector<vector<int>>
#define sti set<int>
#define vpi vector<pair<int,int>>
#define print(a,n) for(int i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl;
#define printmat(a,n,m) for(int i=0;i<n;i++) {for(int j=0;j<m;j++) cout<<a[i][j]<<" "; cout<<endl;}
#define fast ios_base::sync_with_stdio(false);  cin.tie(NULL);
#define endl "\n"
#define mp make_pair
#define ins insert
#define rep(i,s,e)   for(int i=s;i<=e;i++)
#define repd(i,s,e)  for(int i=e;i>=s;i--)
#define vb vector<bool>
#define read2(n,m) int n,m; cin >> n >> m;
#define range(v) v.begin(),v.end()
#define sortd(v) sort(v.begin(),v.end(),greater<int>())
#define sorti(v) sort(v.begin(),v.end())

const ll inf = 1e18;
const ll mod = 1e9 + 7;
 

signed main()
{
 
    fast;
    read(n);
    int  x = sqrt(n);
    int ans=0;
    rep(i,1,x){
    	if(n%i==0 && i%2==1)
    	ans+=2;
    	int k = n/i;
    	
    	if(k!=i && n%k==0 && k%2==1)
    	ans+=2;
    }
    cout<<ans<<endl;
   
    return 0;
}

/* Pooja Yadav */
#include <algorithm>
#include <iostream>
#include <iterator>
#include <list>
#include <memory>
#include <vector>

using namespace std;

struct ConnectedComponent {
  long long sum;
  list<int> vertices;
};

int main() {
  int vertex_cnt;
  int edge_cnt;

  cin >> vertex_cnt >> edge_cnt;

  vector<int> diffs;
  diffs.reserve(vertex_cnt);

  for (int i = 0; i < vertex_cnt; ++i) {
    int a;
    cin >> a;
    diffs.push_back(a);
  }

  for (auto iter = diffs.begin(); iter != diffs.end(); ++iter) {
    int b;
    cin >> b;
    *iter -= b;
  }

  vector<shared_ptr<ConnectedComponent>> conn_comps;
  conn_comps.reserve(vertex_cnt);
  for (int i = 0; i < vertex_cnt; ++i) {
    shared_ptr<ConnectedComponent> comp(new ConnectedComponent);
    comp->sum = diffs[i];
    comp->vertices.push_back(i);
    conn_comps.push_back(comp);
  }

  for (int i = 0; i < edge_cnt; ++i) {
    int c, d;
    cin >> c >> d;
    --c;
    --d;
    auto comp_p = conn_comps[c];
    auto comp_q = conn_comps[d];
    if (comp_p->vertices.size() < comp_q->vertices.size()) {
      comp_p = conn_comps[d];
      comp_q = conn_comps[c];
    }
    if (comp_p.get() != comp_q.get()) {
      for (auto vertex : comp_q->vertices) {
        conn_comps[vertex] = comp_p;
      }
      comp_p->sum += comp_q->sum;
      comp_p->vertices.splice(comp_p->vertices.end(), comp_q->vertices);
    }
  }

  for (auto comp : conn_comps) {
    if (comp->sum != 0) {
      cout << "No" << endl;
      return 0;
    }
  }

  cout << "Yes" << endl;

  return 0;
}

/*

[-905371741, -999219903, 969314057, -989982132, -87720225, -175700172, -993990465, 929461728, 895449935, -999016241, 782467448, -906404298, 578539175, 9684413, -619191091, -952046546, 125053320]
[-440503430, -997661446, -912471383, -995879434, 932992245, -928388880, -616761933, 929461728, 210953513, -994677396, 648190629, -530944122, 578539175, 9684413, 595786809, -952046546, 125053320]

2 10
6 12
9 11
11 5
7 6
3 15
3 1
1 9
10 4

diffs:
[-464868311, -1558457, 1881785440, 5897302, -1020712470, 752688708, -377228532, 0, 684496422, -4338845, 134276819, -375460176, 0, 0, -1214977900, 0, 0]

Connected Components:
1 3 5 9 11 15
2 4 10
6 7 12
8
*/