F - FILO Sort Editorial /

Time Limit: 4 sec / Memory Limit: 750 MB

問題文

(1, 2, ..., N) の順列 a_iQ 個のクエリが与えられる。i 番目のクエリの内容は、x_i が与えられるので数列の x_i 番目と x_i+1 番目の要素の値を入れ替える、というクエリである。

クエリで数列が変更されるたびに、それが良い数列となっているか判定せよ。ただし良い数列は以下のように定義される数列である。

3 つのスタックを考える。それぞれを stack1、stack2、stack3 と呼ぶことにする。最初に、stack1 に a_1, a_2, ..., a_n をこの順に push する。その後、

  • stack1 から pop し、pop した整数を x とする。x を stack2 に push する。
  • stack2 から pop し、pop した整数を x とする。x を stack3 に push する。

という 2 種類の動作を好きなように行い、stack3 の要素を先頭から見た時 1, 2, ..., N となるように出来るとき、a_i は良い数列である。

ただし、push とはスタックの末尾に要素を追加する動作、pop はスタックの末尾から要素を取り出す動作のことを指す。


入力

入力は以下の形式で標準入力から与えられる。

N
a_1 a_2 a_3 ... a_N
Q
x_1
x_2
:
x_Q
  • 1 行目には順列の長さ N(2 ≦ N ≦ 100,000) が与えられる。
  • 2 行目には数列 a_i が空白区切りで与えられる
  • 3 行目にはクエリの個数 Q(1 ≦ Q ≦ 100,000) が与えられる。
  • 続く Q 行にはクエリの内容を表す整数 x_i (1 ≦ x_i ≦ N-1) が与えられる。

出力

出力は標準出力に行い、末尾に改行を入れること。

出力は Q 行からなる。

i 行目には、i 番目のクエリの後に a_i が良い数列となっているならば Yes、そうでなければ No と出力せよ。


入力例 1

3
1 3 2
6
2
2
1
2
1
2

出力例 1

Yes
No
Yes
Yes
Yes
Yes