Recently Lynyrd and Skynyrd went to a shop where Lynyrd bought a permutation $p$ of length $n$, and Skynyrd bought an array $a$ of length $m$, consisting of integers from $1$ to $n$. 

Lynyrd and Skynyrd became bored, so they asked you $q$ queries, each of which has the following form: "does the subsegment of $a$ from the $l$-th to the $r$-th positions, inclusive, have a subsequence that is a cyclic shift of $p$?" Please answer the queries.

A permutation of length $n$ is a sequence of $n$ integers such that each integer from $1$ to $n$ appears exactly once in it.

A cyclic shift of a permutation $(p_1, p_2, \ldots, p_n)$ is a permutation $(p_i, p_{i + 1}, \ldots, p_{n}, p_1, p_2, \ldots, p_{i - 1})$ for some $i$ from $1$ to $n$. For example, a permutation $(2, 1, 3)$ has three distinct cyclic shifts: $(2, 1, 3)$, $(1, 3, 2)$, $(3, 2, 1)$.

A subsequence of a subsegment of array $a$ from the $l$-th to the $r$-th positions, inclusive, is a sequence $a_{i_1}, a_{i_2}, \ldots, a_{i_k}$ for some $i_1, i_2, \ldots, i_k$ such that $l \leq i_1 < i_2 < \ldots < i_k \leq r$.


-----Input-----

The first line contains three integers $n$, $m$, $q$ ($1 \le n, m, q \le 2 \cdot 10^5$) — the length of the permutation $p$, the length of the array $a$ and the number of queries.

The next line contains $n$ integers from $1$ to $n$, where the $i$-th of them is the $i$-th element of the permutation. Each integer from $1$ to $n$ appears exactly once.

The next line contains $m$ integers from $1$ to $n$, the $i$-th of them is the $i$-th element of the array $a$.

The next $q$ lines describe queries. The $i$-th of these lines contains two integers $l_i$ and $r_i$ ($1 \le l_i \le r_i \le m$), meaning that the $i$-th query is about the subsegment of the array from the $l_i$-th to the $r_i$-th positions, inclusive.


-----Output-----

Print a single string of length $q$, consisting of $0$ and $1$, the digit on the $i$-th positions should be $1$, if the subsegment of array $a$ from the $l_i$-th to the $r_i$-th positions, inclusive, contains a subsequence that is a cyclic shift of $p$, and $0$ otherwise.


-----Examples-----
Input
3 6 3
2 1 3
1 2 3 1 2 3
1 5
2 6
3 5

Output
110

Input
2 4 3
2 1
1 1 2 2
1 2
2 3
3 4

Output
010



-----Note-----

In the first example the segment from the $1$-st to the $5$-th positions is $1, 2, 3, 1, 2$. There is a subsequence $1, 3, 2$ that is a cyclic shift of the permutation. The subsegment from the $2$-nd to the $6$-th positions also contains a subsequence $2, 1, 3$ that is equal to the permutation. The subsegment from the $3$-rd to the $5$-th positions is $3, 1, 2$, there is only one subsequence of length $3$ ($3, 1, 2$), but it is not a cyclic shift of the permutation.

In the second example the possible cyclic shifts are $1, 2$ and $2, 1$. The subsegment from the $1$-st to the $2$-nd positions is $1, 1$, its subsequences are not cyclic shifts of the permutation. The subsegment from the $2$-nd to the $3$-rd positions is $1, 2$, it coincides with the permutation. The subsegment from the $3$ to the $4$ positions is $2, 2$, its subsequences are not cyclic shifts of the permutation.

Difficulty: competition

Starter code:

Solutions:
import sys
				
inp = [int(x) for x in sys.stdin.read().split()]

n, m, q = inp[0], inp[1], inp[2]

p = [inp[idx] for idx in range(3, n + 3)]

index_arr = [0] * (n + 1)
for i in range(n):	index_arr[p[i]] = i

a = [inp[idx] for idx in range(n + 3, n + 3 + m)]

leftmost_pos = [m] * (n + 1)
next = [-1] * m

for i in range(m - 1, -1, -1):
	index = index_arr[a[i]]
	right_index = 0 if index == n - 1 else index + 1
	right = p[right_index]
	next[i] = leftmost_pos[right]
	leftmost_pos[a[i]] = i
	
log = 0
while (1 << log) <= n: log += 1
log += 1
dp = [[m for _ in range(m + 1)] for  _ in range(log)]

for i in range(m):
	dp[0][i] = next[i]

for j in range(1, log):
	for i in range(m):
		dp[j][i] = dp[j - 1][dp[j - 1][i]]

last = [0] * m
for i in range(m):
	p = i
	len = n - 1
	for j in range(log - 1, -1, -1):
		if (1 << j) <= len:
			p = dp[j][p]
			len -= (1 << j)
	last[i] = p
	
for i in range(m - 2, -1, -1):
	last[i] = min(last[i], last[i + 1])
	
inp_idx = n + m + 3
ans = []
for i in range(q):
	l, r = inp[inp_idx] - 1, inp[inp_idx + 1] - 1
	inp_idx += 2
	if last[l] <= r:
		ans.append('1')
	else:
		ans.append('0')
print(''.join(ans))

import sys
 
class segmentTree:
	def __init__(self, n):
		self.n = n
		self.seg = [self.n + 1] * (self.n << 1)
		
	def update(self, p, value):
		p += self.n
		self.seg[p] = value
		while p > 1:
			p >>= 1
			self.seg[p] = min(self.seg[p * 2], self.seg[p * 2 + 1])
			
	
	def query(self, l, r):
		res = self.n
		l += self.n
		r += self.n
		while l < r:
			if l & 1:
				res = min(res, self.seg[l])
				l += 1
			if r & 1:
				res = min(res, self.seg[r - 1])
				r -= 1
			l >>= 1
			r >>= 1
		return res
				
inp = [int(x) for x in sys.stdin.read().split()]
 
n, m, q = inp[0], inp[1], inp[2]
 
p = [inp[idx] for idx in range(3, n + 3)]
 
index_arr = [0] * (n + 1)
for i in range(n):	index_arr[p[i]] = i
 
a = [inp[idx] for idx in range(n + 3, n + 3 + m)]
 
leftmost_pos = [m] * (n + 1)
next = [-1] * m
 
for i in range(m - 1, -1, -1):
	index = index_arr[a[i]]
	right_index = 0 if index == n - 1 else index + 1
	right = p[right_index]
	next[i] = leftmost_pos[right]
	leftmost_pos[a[i]] = i
	
log = 0
while (1 << log) <= n: log += 1
log += 1
dp = [[m for _ in range(m + 1)] for  _ in range(log)]
 
for i in range(m):
	dp[0][i] = next[i]
 
for j in range(1, log):
	for i in range(m):
		dp[j][i] = dp[j - 1][dp[j - 1][i]]
 
tree = segmentTree(m)
for i in range(m):
	p = i
	len = n - 1
	for j in range(log - 1, -1, -1):
		if (1 << j) <= len:
			p = dp[j][p]
			len -= (1 << j)
	tree.update(i, p)
 
inp_idx = n + m + 3
ans = []
for i in range(q):
	l, r = inp[inp_idx] - 1, inp[inp_idx + 1] - 1
	inp_idx += 2
	if tree.query(l, r + 1) <= r:
		ans.append('1')
	else:
		ans.append('0')
print(''.join(ans))