import sys input = sys.stdin.readline mod=998244353 from functools import lru_cache @lru_cache(maxsize=None) def calc(keta,n,i): DP=[0]*63 if n==0: if keta>=i: return DP DP[0]=1 return DP if keta==i: DP2=calc(keta,(n-1)//2,i+1) for j in range(1,63): DP[j]=DP2[j-1] return DP else: DP2=calc(keta,n//2,i+1) DP3=calc(keta,(n-1)//2,i+1) for j in range(63): DP[j]=DP2[j] if j>=1: DP[j]+=DP3[j-1] DP[j]%=mod return DP ANS=0 n=int(input()) for i in range(63): DP=calc(i,n,0) P=pow(2,i,mod) for j in range(63): x=DP[j] ANS+=P*(x*(x+1)//2) ANS%=mod #print(DP) print(ANS%mod)