#ijpc2015j. [ijpc2015_j]Верный

[ijpc2015_j]Верный

問題文

IOI2015の開催されたアルマトイは昔、Верный(ヴェールヌイ)という名前であった。
どうやらロシア語で「忠実な」とか「信頼できる」とかいった意味があるらしい。。
joisinoお姉ちゃんは、これを聞いて、部下が自分にいかに忠実かを試そうとした。

まず、木Xと木Yを用意した。各頂点は00から(木の頂点数1)(木の頂点数-1)までの名前がついており、'a'から'j'までのどれかの小文字のアルファベットが一つ書かれている。

以下の操作をQQ回行う。

  • AAからBBまでの木X上のパス(AA,BB含む)上にあるアルファベット2つを入れ替える。
      例えば、a'a'b'b'を入れ替えると、パス上のa'a'b'b'となり、b'b'a'a'となる。
  • AAからBBまでの木Y上のパス(AA,BB含む)上にあるアルファベット2つを入れ替える。
      例えば、a'a'b'b'を入れ替えると、パス上のa'a'b'b'となり、b'b'a'a'となる。
  • 木XのAAからBBまでのパス(AA,BB含む)上にあるアルファベットを並べた文字列と、木YのCCからDDまでのパス(CC,DD含む)上にあるアルファベットを並べた文字列が完全に一致するか、そうでないかを答える。
  • aa回のクエリを実行した直後の状態に戻す。
      ただし、(このクエリを処理する前に処理したクエリの数)≧aa00とする。

制限

11QQ10510^5
11(Xの頂点数)(木Xの頂点数)10510^5
11(Yの頂点数)(木Yの頂点数)10510^5

配点

  • この問題に部分点は存在しない。すべてのテストケースに正解すると100100点が得られる。

入力

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

木Xについてのデータ 木Yについてのデータ QQ クエリ1クエリ1 クエリ2クエリ2 . . . クエリQクエリQ  始めに、木Xについてのデータが与えられる。
 その次に、木Yについてのデータが与えられる。
 その次に、クエリ数を指す整数QQが1行で与えられる。  その次のQQ行は各クエリを意味する。
 各木のデータは、以下の形式で与えられる。
NN ss a1a_1 b1b_1 a2a_2 b2b_2 . . . aN1a_N-1 bN1b_N-1  データ内の1行目に、木の頂点数NNが整数で与えられる。
 次の1行に、長さNNの文字列sが与えられる。この文字列のi+1i+1文字目(00iiNN)は、木の頂点iに書かれている小文字を指す。
 次のN-1行の各行は、木の辺を意味する。
 aia_ibib_iは、頂点aia_iと頂点bib_i(00iiN1N-1)の間に辺があることを意味する。

各クエリは1行から与えられる。  まず、初めにクエリの種類を指す整数ttが与えられる。

* ttが0の時
 空白区切りでこの後に整数aa,bbと小文字cc,ddがこの順で与えられる。  これは、木Xの頂点aa,bb間のパス上の頂点(aa,bb含む)それぞれにおいて、ccが書かれている場合ddに、ddが書かれている場合ccに書き換えることを意味する。    * ttが1の時
 空白区切りでこの後に整数aa,bbと小文字cc,ddがこの順で与えられる。  これは、木Yの頂点aa,bb間のパス上の頂点(aa,bb含む)それぞれにおいて、ccが書かれている場合ddに、ddが書かれている場合ccに書き換えることを意味する。    * ttが2の時
 空白区切りでこの後に整数aa,bbと小文字cc,ddがこの順で与えられる。  これは、(木Xの頂点aa,bb間のパス上の頂点(aa,bb含む)に書かれている文字を、aaから順に並べたときの文字列)と(木Yの頂点cc,dd間のパス上の頂点(cc,dd含む)に書かれている文字を、ccから順に並べたときの文字列)が一致するかしないかを答えることを意味する。    * ttが3の時
 空白区切りでこの後に整数aaが与えられる。  これは、木Xと木Yを、aa回クエリを処理した直後の状況に戻すことを意味する。

出力

それぞれのクエリにおいてttが2のとき、文字列が一致する場合"YES""YES"、一致しない場合"NO""NO"を1行に出力せよ。
 なお入力全体の最後には改行を忘れないこと。


入力例11

4
ckdl
0 2
0 1
1 3
4
lckd
2 1
1 3
2 0
4
2 2 3 3 0
2 2 3 0 3
2 3 2 0 3
2 3 2 3 0

出力例11

YES
NO
YES
NO