mod = 998244353 def main(t): dp = [0] * 61 pcnt = 0 f = 1 for i in range(59, -1, -1): if i != t: for j in range(59, -1, -1): dp[j+1] = (dp[j+1]+dp[j]) % mod if f: if n >> i & 1: dp[pcnt] = (dp[pcnt]+1) % mod pcnt += 1 else: for j in range(59, -1, -1): dp[j+1] = dp[j] dp[0] = 0 if f: if n >> i & 1: pcnt += 1 else: f = 0 if f: dp[pcnt] = (dp[pcnt]+1) % mod return dp n = int(input()) ans = 0 A = [pow(2, i, mod) for i in range(60)] for i in range(60): dp = main(i) for j in range(61): ans = (ans + A[i] * dp[j] * dp[j]) % mod ans0 = n * (n+1) // 2 % mod ans = ((ans - ans0) * pow(2, -1, mod) + ans0) % mod print(ans)