#include<iostream>
#include<cstdio>
#include<map> 
using namespace std;
map<long,long>dp;
const long long mod=1e9+7;
long long DP(long long x)
{
	if(dp[x]) return dp[x];
	else
	{
		dp[x]=(DP(x/2)+DP((x-1)/2)+DP((x-2)/2))%mod;
	}
}
int main()
{
	long long n;
	cin>>n;
	dp[0]=1;dp[1]=2;
	cout<<DP(n);
	return 0;
} 