#-------------------------------------------------- import sys import functools #sys.setrecursionlimit(10**9) #codon↓-------------------------------------------- _factorial=[1] def factorial(n): while len(_factorial)<=n: _factorial.append((_factorial[-1]*len(_factorial))%mod) return _factorial[n] def binom(n,r): if r>=mod: raise ValueError("r is too big") if n<0: return 0 if r>n: return 0 if r<0: return 0 ans=((factorial(n)*pow(factorial(r),mod-2,mod))%mod*pow(factorial(n-r),mod-2,mod))%mod return ans import string import itertools alp_low=list(string.ascii_lowercase) alp_up=list(string.ascii_uppercase) dij=[[0,1],[1,0],[0,-1],[-1,0]] mod=998244353 INF=10**18 def dijkstra(edges, num_node,start): """ [node_num,weight>0][ (example) Edges = [ [[1, 4], [2, 3]], [[0, 1], [3, 1]], [[3, 2]], [], ] """ import heapq;n=[INF]*num_node;n[start]=0;n_name=[];heapq.heappush(n_name,[0,start]) while len(n_name): _,min_p=heapq.heappop(n_name) for f in edges[min_p]: g,c=f if n[min_p]+cn: ans+=(solve12(n)-solve12(now-1))*kei ans%=mod return ans else: ans+=(solve12(hen[-1][0]-1)-solve12(now-1))*kei now,dif=hen.pop(-1) kei*=dif kei%=mod return ans n,=nin() print(solve(n)) if __name__=="__main__": main()