#arc163a. [arc163_a]Divide String

[arc163_a]Divide String

問題文

長さ NN の英小文字からなる文字列 SS が与えられます。SS22 個以上の連続部分文字列に分割し、それらが辞書順で狭義単調増加になるようにすることが出来るか判定してください。

厳密に書くと、以下の条件を全て満たす文字列の列 t=(t1,t2,dots,tk)t=(t_1,t_2,\\dots,t_k) が存在するか判定してください。

  • 列の長さ kk22 以上である。

  • tit_i は空でない。(1leilek1 \\le i \\le k)

  • t1,t2,dots,tkt_1,t_2,\\dots,t_k をこの順で連結すると SS と一致する。

  • 1lei<k1 \\le i < k を満たす整数 ii に対して、tit_iti+1t_{i+1} より辞書順で小さい。

TT 個のテストケースが与えられるので、それぞれについて答えを求めてください。

辞書順とは?

文字列 S=S1S2ldotsSSS = S_1S_2\\ldots S_{|S|} が文字列 T=T1T2ldotsTTT = T_1T_2\\ldots T_{|T|} より辞書順で小さいとは、下記の 1. と 2. のどちらかが成り立つことを言います。 ここで、S,T|S|, |T| はそれぞれ S,TS, T の長さを表します。

  1. SltT|S| \\lt |T| かつ S1S2ldotsSS=T1T2ldotsTSS_1S_2\\ldots S_{|S|} = T_1T_2\\ldots T_{|S|}
  2. ある整数 1leqileqminlbraceS,Trbrace1 \\leq i \\leq \\min\\lbrace |S|, |T| \\rbrace が存在して、下記の 22 つがともに成り立つ。
    • S1S2ldotsSi1=T1T2ldotsTi1S_1S_2\\ldots S_{i-1} = T_1T_2\\ldots T_{i-1}
    • SiS_iTiT_i よりアルファベット順で小さい文字である。

制約

  • 1leTle20001 \\le T \\le 2000
  • 2leNle20002 \\le N \\le 2000
  • SS は長さ NN の英小文字からなる文字列
  • 11 個の入力に含まれるテストケースについて、それらの NN の総和は 20002000 を超えない。

入力

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

TT mathrmcase1\\mathrm{case}_1 mathrmcase2\\mathrm{case}_2 vdots\\vdots mathrmcaseT\\mathrm{case}_T

ここで、mathrmcasei\\mathrm{case}_i とは ii 個目のテストケースである。各テストケースは以下の形式で与えられる。

NN SS

出力

TT 行出力せよ。

i(1leileT)i(1 \\le i \\le T) 行目には、ii 個目のテストケースにおいて SS を条件を満たすように分割できるならば Yes を、そうでないならば No を出力せよ。


入力例 1

5
4
abac
3
cac
2
ab
12
abababababab
5
edcba

出力例 1

Yes
No
Yes
Yes
No

11 個目のテストケースは、SSa,ba,c と分割すればよいです。

22 個目のテストケースは、SS をどのように分割しても辞書順で狭義単調増加にすることは出来ません。