#include <iostream>
#include <cmath>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <sstream>
#include <cstring>
#include <stdio.h>
using namespace std;

#define Size(x) (int)(x).size()
#define For(i,a,b) for(int i=(int)(a);i<=(int)(b);++i)
#define Ford(i,a,b) for(int i=(int)(a);i>=(int)(b);--i) 
#define RepV(i,v) for (int i=0;i<Size(v);++i)
#define All(c) (c).begin(),(c).end()
#define Fill(a,b) memset(&a,b,sizeof(a))
#define Min(a,b) ((a)<(b)?(a):(b))
#define Max(a,b) ((a)>(b)?(a):(b))
#define Abs(a) ((a)<0?-(a):(a))

// Factorization
vector <int> factor(int n){
   vector <int> res;
   if (n==1) {
      res.push_back(1); res.push_back(1);
      return res;
   }
   int l = 1, h = (int)floor(sqrt((double)n))+1;
   while (n>1) {
      int d = n;
      For(i,l+1,h) if (n%i==0) {d=i; break;}
      int c=0;
      while (n%d==0) {++c; n/=d;}
      res.push_back(d); res.push_back(c);
      l = d;
   }
   return res;
}

int main(){
  // freopen("input.txt","rt",stdin);
//   freopen("output.txt","wt",stdout);
   
   int n;
   scanf("%d",&n);
   
   
   if (n==1) {printf("1"); return 0;}
   
   long long res=1;
   vector <int> v = factor(n);
   RepV(i,v) if (i%2) res *= (long long)(2*v[i]+1);
   
   cout << res;
   
   return 0;
}
