loj#P6861. 「ICPC World Finals 2021」分流

「ICPC World Finals 2021」分流

Description

A splitstream system is an acyclic network of nodes that processes finite sequences of numbers. There are two types of nodes (illustrated in Figure J.1):

  • A split node takes a sequence of numbers as input and distributes them alternatingly to its two outputs. The first number goes to output 11, the second to output 22, the third to output 11, the fourth to output 22, and so on, in this order.
  • A merge node takes two sequences of numbers as input and merges them alternatingly to form its single output. The output contains the first number from input 11, then the first from input 22, then the second from input 11, then the second from input 22, and so on. If one of the input sequences is shorter than the other, then the remaining numbers from the longer sequence are simply transmitted without being merged after the shorter sequence has been exhausted.

J.png

Figure J.1: Illustration of how split and merge nodes work.

The overall network has one input, which is the sequence of positive integers 1,2,3,,m1,2,3,\ldots,m. Any output of any node can be queried. A query will seek to identify the kthk^\text{th} number in the sequence of numbers for a given output and a given kk. Your task is to implement such queries efficiently.

Input

The first line of input contains three integers mm, nn, and qq, where mm (1m1091 \le m \le 10^9) is the length of the input sequence, nn (1n1041 \le n \le 10^4) is the number of nodes, and qq (1q1031 \le q \le 10^3) is the number of queries.

The next nn lines describe the network, one node per line. A split node has the format S x y z\texttt{S}\ x\ y\ z, where xx, yy and zz identify its input, first output and second output, respectively. A merge node has the format M x y z\texttt{M}\ x\ y\ z, where xx, yy and zz identify its first input, second input and output, respectively. Identifiers xx, yy and zz are distinct positive integers. The overall input is identified by 11, and the remaining input/output identifiers form a consecutive sequence beginning at 22. Every input identifier except 11 appears as exactly one output. Every output identifier appears as the input of at most one node.

Each of the next qq lines describes a query. Each query consists of two integers xx and kk, where xx (2x1052 \le x \le 10^5) is a valid output identifier and kk (1k1091 \le k \le 10^9) is the index of the desired number in that sequence. Indexing in a sequence starts with 11.

Output

For each query xx and kk output one line with the kthk^\text{th} number in the output sequence identified by xx, or none if there is no element with that index number.

200 2 2
S 1 2 3
M 3 2 4
4 99
4 100

100
99

100 3 6
S 1 4 2
S 2 3 5
M 3 4 6
6 48
6 49
6 50
6 51
6 52
5 25

47
98
49
51
53
100

2 3 3
S 1 2 3
S 3 4 5
M 5 2 6
3 1
5 1
6 2

2
none
none