
#include "iostream"
#include "vector"
#include "algorithm"
#include "map"
typedef long long i64;

i64 n;
i64 MODULO = (i64)(1e9 + 7);

std::map<i64, std::map<i64, i64>> map;

i64 f(i64 x, i64 y) {
	if (x == 0 && y == 0)
		return 1;
	if (x < 0 || y < 0)
		return 0;
	i64& ret = map[x][y];
	if (ret != 0)return ret;
	ret += f(x >> 1, y >> 1);
	ret += f((x - 1) >> 1, (y - 1) >> 1);
	ret += f((x - 2) >> 1, y >> 1);
	ret %= MODULO;
	return ret%MODULO;
}

int main() {
	std::cin >> n;
	std::cout << f(n, n);
	return 0;
}


