#iroha2019day2j. [iroha2019_day2_j]ライ麦畑で待ちながら
[iroha2019_day2_j]ライ麦畑で待ちながら
問題文
青木さんは高橋君と遊ぶ約束をしていましたが、待てど暮らせど高橋君が来ないので、次のような遊びをすることにしました。
- 枚の赤いカードと 枚の青いカードを、一列に交互に並べておく。つまり、まず赤いカードを一列に並べ、隣り合う赤いカードの間に青いカードを置く。
- 左から 番目の赤いカードには、はじめ非負整数 が書いてある。
- 左から 番目の青いカードには、片方の面に
+
が、他方の面に×
が書いてある。 が+
のとき+
の面が、 が*
のとき×
の面がはじめ表向きである。 - 青木さんは、 個のクエリを番号順に実行する。 番目のクエリの内容は つの非負整数 で表され、以下のように解釈する。
- のとき、左から 番目の赤いカードに書かれた整数を に書き換える。
- のとき、左から 番目の青いカードを裏返す。このクエリにおいては、 が保証される。
- のとき(回答クエリ)、左から 番目の赤いカードを左端、 番目の赤いカードを右端とする部分カード列を数式として見て、その計算結果を答える。ただし、青木さんは紙やペンもなしに大きな数を計算できないので、 で割った余りを答える。
いろはちゃんは、青木さんの答えが合っているか確認するために、上の遊びをシミュレートするプログラムを書くことにしました。
制約
- は
+
と*
のみから成る長さ の文字列、その他はすべて整数 - 各質問 について、以下の つのいずれかが成り立つ
- $T_i = 1,\\ 1 \\leq X_i \\leq N,\\ 0 \\leq Y_i \\leq 10^9$
入力
入力は以下の形式で標準入力から与えられます。
出力
各回答クエリの正しい答えをそれぞれ 行で順に出力してください。
入力例 1
5
1 2 3 4 100
**+*
5
3 1 4
1 5 5
3 4 5
2 1 0
3 1 5
出力例 1
10
20
27
行目には、を出力します。+
や×
は、通常の四則演算と同じように計算します。
入力例 2
30
141056031 626562406 398984580 302301632 724833823 819260147 433302050 210081 464012738 867417506 592634049 207581070 196502965 201049574 651294024 481261837 785858015 132486153 389688195 704728852 193622905 503147306 35766369 884292216 743597128 172030481 568485269 51112624 850324303 618492623
**+**++++*+***+*++******++*++
30
3 8 9
2 21 0
1 18 32689954
2 27 0
2 28 0
3 5 23
3 3 3
1 19 705926811
3 19 21
2 8 0
2 20 0
3 8 25
2 2 0
1 23 249011956
3 4 17
2 2 0
2 2 0
3 15 23
3 1 16
2 2 0
3 20 28
3 17 21
1 25 300797469
2 14 0
3 6 30
3 4 28
2 10 0
1 5 102545023
1 30 895902786
3 1 30
出力例 2
464222819
10116361
398984580
494861147
781529391
919851764
726060889
72956646
887945392
641812930
620768060
243676249
751282029