#include <bits/stdc++.h>
using namespace std;

long long N;
const int md = 1e9 + 7;
const int a[] = {0, 0, 1};
const int b[] = {1, 0, 1};

int f[64][3];

int main() {
	ios_base::sync_with_stdio(false); cin.tie(0);
	cin >> N;
	f[63][0] = 1;
	for (int i = 62; i >= 0; --i) {
		int x = (N >> i & 1);
		for (int j = 0; j <= 2; ++j) {
			if (!f[i+1][j]) continue;
			for (int k = 0; k < 3; ++k) {
				int nj = j * 2 + x - (a[k] + b[k]);
				if (nj < 0) continue;
				nj = min(nj, 2);
				f[i][nj] = (f[i][nj] + f[i+1][j]) % md;
			}
		}
	}

	int ans = 0;
	for (int i = 0; i <= 2; ++i) ans = (ans + f[0][i]) % md;
	cout << ans << endl;
}