配点 : 400 点
問題文
N=220 項からなる数列 A=(A0,A1,…,AN−1) があります。はじめ、全ての要素は −1 です。
Q 個のクエリを順番に処理してください。i(1≤i≤Q) 個目のクエリは ti=1 または ti=2 を満たす整数 ti および整数 xi で表され、内容は以下の通りです。
- ti=1 のとき、以下の処理を順番に行う。1. 整数 h を h=xi で定める。
2. AhmodN=−1 である間、h の値を 1 増やすことを繰り返す。この問題の制約下でこの操作が有限回で終了することは証明できる。
3. AhmodN の値を xi で書き換える。
- ti=2 のとき、その時点での AximodN の値を出力する。
なお、整数 a,b に対し、a を b で割った余りを amodb と表します。
制約
- 1≤Q≤2×105
- ti∈{1,2}(1≤i≤Q)
- 0≤xi≤1018(1≤i≤Q)
- ti=2 であるような i(1≤i≤Q) が 1 つ以上存在する。
- 入力は全て整数である。
入力
入力は以下の形式で標準入力から与えられる。
Q
t1 x1
⋮
tQ xQ
出力
ti=2 であるようなクエリに対し、それぞれ答えを 1 行に出力せよ。そのようなクエリが 1 つ以上存在することは保証される。
4
1 1048577
1 1
2 2097153
2 3
1048577
-1
x1modN=1 であるので、1 番目のクエリによって A1=1048577 となります。
2 番目のクエリにおいて、はじめ h=x2 ですが、AhmodN=A1=−1 であるので h の値を 1 増やします。すると AhmodN=A2=−1 となるので、このクエリによって A2=1 となります。
3 番目のクエリにおいて、Ax3modN=A1=1048577 を出力します。
4 番目のクエリにおいて、Ax4modN=A3=−1 を出力します。
この問題において N=220=1048576 は定数であり、入力では与えられないことに注意してください。