#include <iostream>
#include <map>
using namespace std;
const long long MOD = 1e9 + 7;

map<pair<long long, int>, long long> mm;

long long solve(long long N, int b)
{
  if (N < 0)
    return 0LL;
  if (b == -1)
    return 1LL;
  if (N > 4LL * (1LL << b))
    N = 4LL * (1LL << b);
  //cout << N << " " << b << endl;
  if (mm[{N, b}] != 0)
    return mm[{N, b}];
  mm[{N, b}] = (solve(N, b - 1) + solve(N - (1LL << b), b - 1) + solve(N - 2LL * (1LL << b), b - 1)) % MOD;
  return mm[{N, b}];
}

int main()
{
  long long n;
  cin >> n;
  cout << solve(n, 60);
}