#include using namespace std; using ll=long long; #include using mint=atcoder::modint998244353; int main(){ ll n; cin>>n; mint ans=0; for(int c=0;c<60;c++){ vector> dp(120,vector(120)),ndp(120,vector(120)); dp[60][60]=1; for(int i=59;i>=0;i--){ for(int j=0;j<120;j++)for(int k=0;k<120;k++){ for(int x=0;x<2;x++)for(int y=0;y<2;y++){ if(i==c){ if(x==0||y==0)continue; } int nj=j,nk=k; if(j>=60){ if(n>>i&1){ if(x==0)nj-=60; }else{ if(x==1)continue; } } if(k>=60){ if(n>>i&1){ if(y==0)nk-=60; }else{ if(y==1)continue; } } if(x==1)nj++; if(y==1)nk++; if(nj<120&&nk<120)ndp[nj][nk]+=dp[j][k]; } } swap(dp,ndp); for(int j=0;j<120;j++)ndp[j].assign(120,0); } mint res=0; for(int i=0;i<60;i++)res+=(1ll<