#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
int dp[64][2][3];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int64_t n;
  cin >> n;
  dp[63][0][0] = 1;
  for (int k = 62; k >= 0; --k) {
    int64_t r = 1LL << k;
    for (int64_t cput = 0; cput <= r; cput += r) {
      for (int i = 0; i < 2; ++i) {
        for (int pi = 0; pi < 2; ++pi) {
          if (i == 0 && pi == 1) {
            continue;
          }
          if (i == 1 && pi == 0 && !((n & r) != 0 && cput == 0)) {
            continue;
          }
          if (i == 0 && pi == 0 && cput != (r & n)) {
            continue;
          }
          if (cput == 0) {
            if (n & r) {
              dp[k][i][2] += dp[k + 1][pi][1];
              dp[k][i][2] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][1];
              dp[k][i][2] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
              dp[k][i][1] += dp[k + 1][pi][0];
              dp[k][i][1] %= MOD;
            } else {
              dp[k][i][0] += dp[k + 1][pi][0];
              dp[k][i][0] %= MOD;
              dp[k][i][0] += dp[k + 1][pi][1];
              dp[k][i][0] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][1];
              dp[k][i][2] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
            }
          } else {
            if (n & r) {
              dp[k][i][0] += dp[k + 1][pi][0];
              dp[k][i][0] %= MOD;
              dp[k][i][1] += dp[k + 1][pi][1];
              dp[k][i][1] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
            } else {
              dp[k][i][1] += dp[k + 1][pi][1];
              dp[k][i][1] %= MOD;
              dp[k][i][2] += dp[k + 1][pi][2];
              dp[k][i][2] %= MOD;
            }
          }
        }
      }
    }
  }
  int ans = 0;
  for (int i = 0; i < 2; ++i) {
    for (int j = 0; j < 3; ++j) {
      ans = (ans + dp[0][i][j]) % MOD;
    }
  }
  cout << ans << '\n';
}
