#include <bits/stdc++.h>
using namespace std;
long long int modulo = 1e9 + 7;
long long int expo[40];
long long int cuantos[40][40][2];
int main() {
  expo[0] = 1;
  for (int i = 1; i < 40; i++) expo[i] = (expo[i - 1] * 2) % modulo;
  int input;
  cin >> input;
  cuantos[30][0][0] = 1;
  for (int b = 29; b >= 0; b--) {
    cuantos[b][0][0] = (input >> b) == 0;
    cuantos[b][0][1] = (input >> b) > 0;
    for (int k = 1; k <= 30; k++) {
      cuantos[b][k][0] = (cuantos[b + 1][k][0] * expo[k - 1]) % modulo;
      cuantos[b][k][1] =
          (cuantos[b + 1][k][1] * expo[k] + cuantos[b + 1][k - 1][1]) % modulo;
      if (input & (1 << b)) {
        cuantos[b][k][0] =
            (cuantos[b][k][0] + cuantos[b + 1][k - 1][0]) % modulo;
        cuantos[b][k][1] =
            (cuantos[b][k][1] + cuantos[b + 1][k][0] * expo[k - 1]) % modulo;
      }
    }
  }
  long long int sol = 0;
  for (int k = 0; k <= 30; k++)
    sol = (sol + cuantos[0][k][0] + cuantos[0][k][1]) % modulo;
  cout << sol << endl;
}
