#include #include namespace my{ using ml=atcoder::modint998244353; auto&operator>>(std::istream&i,ml&x){int t;i>>t;x=t;return i;} auto&operator<<(std::ostream&o,const ml&x){return o<ostream&operator<<(ostream&o,const map&m){fe(m,e)o<ostream&operator<<(ostream&o,const unordered_map&m){fe(m,e)o<ostream&operator<<(ostream&o,const bitset&b){fo(i,n)o<concept isv=is_base_of_v,V>; templateistream&operator>>(istream&i,vector&v){fe(v,e)i>>e;return i;} templateostream&operator<<(ostream&o,const vector&v){fe(v,e)o<?nl:sp);return o;} templatestruct vec:vector{ using vector::vector; vec(const vector&v){fe(v,e)this->eb(e);} templatevec(const bitset&a){fo(i,n)this->eb(a[i]);} vec&operator+=(const vec&u){vec&v=*this;fo(i,v.size())v[i]+=u[i];return v;} vec&operator-=(const vec&u){vec&v=*this;fo(i,v.size())v[i]-=u[i];return v;} vec&operator^=(const vec&u){fe(u,e)this->eb(e);return*this;} vec operator+(const vec&u)const{return vec(*this)+=u;} vec operator-(const vec&u)const{return vec(*this)-=u;} vec operator^(const vec&u)const{return vec(*this)^=u;} vec&operator++(){fe(*this,e)++e;return*this;} vec&operator--(){fe(*this,e)--e;return*this;} vec operator-()const{vec v=*this;fe(v,e)e=-e;return v;} }; void io(){cin.tie(0)->sync_with_stdio(0);cout<>...>>a);} templatevoid pp(const auto&...a){ll n=sizeof...(a);((cout<0,c)),...);cout<prime_enumerate(ll n){ vecsieve(n/3+1,1); for(ll p=5,d=4,i=1,rn=sqrt_floor(n);p<=rn;p+=d=6-d,i++){ if(!sieve[i])continue; for(ll q=(p*p)/3,r=d*p/3+(d*p%3==2),s=p*2;qr{2,3}; for(ll p=5,d=4,i=1;p<=n;p+=d=6-d,i++)if(sieve[i])r.eb(p); while(r.size()&&r.back()>n)r.pop_back(); return r; } auto legendre_formula(ll n){ auto primes=prime_enumerate(n); unordered_mapr; fe(primes,p)for(ll t=p;t<=n;t*=p)r[p]+=n/t; return map(r.begin(),r.end()); } void main(){io();ll T=1;fo(T)solve();} void solve(){ LL(N); auto primes=prime_enumerate(N); auto factors=legendre_formula(N); ll B=0; fe(factors,p,b)amax(B,b); ml ans=0; fo(i,1,B+1){ ml t=1; fe(primes,p)t*=(1+factors[p]/i); ans+=t-1;//1は除外 ll cu=(ll)primes.size()-1; while(cu>=0&&factors[primes[cu]]/i==0){ primes.pop_back(); cu--; } } pp(ans); }}