from functools import lru_cache @lru_cache(maxsize=None) def f(n): # 返り値: sum(x*ppopcnt(x)), sum(popcnt(x)) if n==0: return 0,0 (a,b),(c,d) = f(n//2),f((n-1)//2) x = (n+n%2)//2 return 2*(a+c) + d + x*x, b + d + x n = int(input()) print(f(n)[0]%(10**9+7))