atcoder#ABC228D. [ABC228D] Linear Probing

[ABC228D] Linear Probing

Score : 400400 points

Problem Statement

There is a sequence A=(A0,A1,,AN1)A = (A_0, A_1, \dots, A_{N - 1}) with N=220N = 2^{20} terms. Initially, every term is 1-1.

Process QQ queries in order. The ii-th query (1iQ)(1 \leq i \leq Q) is described by an integer tit_i such that ti=1t_i = 1 or ti=2t_i = 2, and another integer xix_i, as follows.

  • If ti=1t_i = 1, do the following in order.1. Define an integer hh as h=xih = x_i. 2. While AhmodN1A_{h \bmod N} \neq -1, keep adding 11 to hh. We can prove that this process ends after finite iterations under the Constraints of this problem. 3. Replace the value of AhmodNA_{h \bmod N} with xix_i.
  • If ti=2t_i = 2, print the value of AximodNA_{x_i \bmod N} at that time.

Here, for integers aa and bb, amodba \bmod b denotes the remainder when aa is divided by bb.

Constraints

  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • ti{1,2}(1iQ)t_i \in \{ 1, 2 \} \, (1 \leq i \leq Q)
  • 0xi1018(1iQ)0 \leq x_i \leq 10^{18} \, (1 \leq i \leq Q)
  • There is at least one ii (1iQ)(1 \leq i \leq Q) such that ti=2t_i = 2.
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

QQ

t1t_1 x1x_1

\vdots

tQt_{Q} xQx_{Q}

Output

For each query with ti=2t_i = 2, print the response in one line. It is guaranteed that there is at least one such query.

4
1 1048577
1 1
2 2097153
2 3
1048577
-1

We have x1modN=1x_1 \bmod N = 1, so the first query sets A1=1048577A_1 = 1048577.

In the second query, initially we have h=x2h = x_2, for which AhmodN=A11A_{h \bmod N} = A_{1} \neq -1, so we add 11 to hh. Now we have AhmodN=A2=1A_{h \bmod N} = A_{2} = -1, so this query sets A2=1A_2 = 1.

In the third query, we print Ax3modN=A1=1048577A_{x_3 \bmod N} = A_{1} = 1048577.

In the fourth query, we print Ax4modN=A3=1A_{x_4 \bmod N} = A_{3} = -1.

Note that, in this problem, N=220=1048576N = 2^{20} = 1048576 is a constant and not given in input.