Description


Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7: 


1) 1+1+1+1+1+1+1 


2) 1+1+1+1+1+2 


3) 1+1+1+2+2 


4) 1+1+1+4 


5) 1+2+2+2 


6) 1+2+4 



Help FJ count all possible representations for a given integer N (1 <= N <= 1,000,000). 



Input


A single line with a single integer, N.

Output


The number of ways to represent N as the indicated sum. Due to the potential huge size of this number, print only last 9 digits (in base 10 representation).

Sample Input


7

Sample Output


6


设dp[n]表示n的拆分数,若n是奇数,必能拆分出一个1,所以dp[n]=dp[n-1];若n是偶数,则n/2的所有拆分方法每个数乘以2后就是n的拆分方法,n还可以拆成1+1+(n-2),所以dp[n]=dp[n/2]+dp[n-2]


#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const double EPS = 1e-8;
const int MAXN = 1000010;
int dx[] = {0, 1, 0, -1}, dy[] = {-1, 0, 1, 0};

int dp[MAXN] = {0, 1, 2};

int main()
{
for (int i = 3; i < MAXN; ++i)
dp[i] = (i&1) ? dp[i-1] : (dp[i/2] + dp[i-2]) % 1000000000;
int n;
cin >> n;
cout << dp[n] << endl;
return 0;
}