#include using namespace std; using i64=int64_t; using u64=uint64_t; template struct Modint{ u64 val; Modint(i64 val_=0):val((val_%i64(mod)+i64(mod))%i64(mod)){} Modint operator-(){ return (val==0)?0:mod-val; } Modint operator+(Modint rhs){ return Modint(*this)+=rhs; } Modint operator-(Modint rhs){ return Modint(*this)-=rhs; } Modint operator*(Modint rhs){ return Modint(*this)*=rhs; } Modint operator/(Modint rhs){ return Modint(*this)/=rhs; } Modint pow(i64 rhs){ Modint res=1,now=(*this); while(rhs){ res*=((rhs&1)?now:1),now*=now,rhs>>=1; } return res; } Modint &operator+=(Modint rhs){ val+=rhs.val,val-=((val>=mod)?mod:0); return (*this); } Modint &operator-=(Modint rhs){ val+=((val>(std::istream& is,Modint& x){ u64 t; is>>t,x=t; return is; } }; int main(){ constexpr u64 mod=998244353; using mint=Modint; i64 N; cin>>N; mint ans=0; vector ln(61),dv(61); for(int i=0;i<=60;++i){ ln[i]=mint(1)/((1ll<