#include <iostream>
#include <cmath>
#define MAX 1000
using namespace std;
unsigned int LOG2(unsigned int x){
unsigned int ret;
__asm__ __volatile__ ("bsrl %1, %%eax":"=a"(ret):"m"(x));
return ret;
}
int Way(int n, int dp[]){
int m = LOG2(n);
if(n<0) return 0;
if(n==0) return 1;
if(dp[n]>0) return dp[n];
else{
for(int i=0; i<=m; i++){
dp[n] += Way(n-pow(2,i), dp);
}
return dp[n];
}
}
int main(){
int m[MAX]={0};
int N;
cin >> N;
cout << Way(N,m) << endl;
}