問題文
IncDecJmp は以下の 3 つの命令のみからなるプログラミング言語です。
- INC(x) : x を 1 増やし次の行へ進む。
- DEC(x) : x>0 ならば x を 1 減らし次の行へ進む。x≤0 ならば何もせず次の行へ進む。
- JMP(x,i) : x>0 ならば i 行目へ進む。x≤0 ならば次の行へ進む。
プログラムの例:
IncDecJmp で書かれた以下のプログラムについて、変数を (A,B)←(0,2) と初期化して実行した場合の挙動を示します。
1: INC(A)
2: DEC(B)
3: JMP(B, 1)
- 最初の変数の値は (A,B)=(0,2) である。
- 1 行目が実行される。(A,B)=(1,2) となる。
- 2 行目が実行される。(A,B)=(1,1) となる。
- 3 行目が実行される。B>0 なので 1 行目にジャンプする。
- 1 行目が実行される。(A,B)=(2,1) となる。
- 2 行目が実行される。(A,B)=(2,0) となる。
- 3 行目が実行される。B=0 なので何もしない。
- プログラムが停止する。最終的な変数の値は (A,B)=(2,0) である。
非負整数 N が与えられます。IncDecJmp で書かれた以下のプログラムについて、変数を (A,B,C,D,E)←(0,0,0,0,N) と初期化してプログラムを実行します。プログラムが停止したときの変数 D の値を求めてください。
1: INC(B)
2: DEC(A)
3: JMP(A, 1)
4: INC(A)
5: INC(A)
6: DEC(B)
7: JMP(B, 4)
8: DEC(C)
9: JMP(C, 1)
10: INC(C)
11: DEC(A)
12: JMP(A, 10)
13: DEC(D)
14: JMP(D, 1)
15: INC(D)
16: DEC(C)
17: JMP(C, 15)
18: DEC(E)
19: JMP(E, 1)
答えは非常に大きくなることがあるので、答えを 998244353 で割った余りを出力してください。
なお本問の制約下でプログラムが停止することが証明できます。
制約
- 0≤N≤2×105
- N は整数
入力
入力は以下の形式で標準入力から与えられます。
出力
答えを 998244353 で割った余りを出力してください。
最後に改行してください。
サンプル
答えを 998244353 で割った余りを出力することに注意してください。