#abc280h. [abc280_h]Substring Sort

[abc280_h]Substring Sort

问题陈述

给定 NN 个字符串 S1,S2,ldots,SNS_1,S_2,\\ldots, S_N。令 $M = \\displaystyle\\sum_{i=1}^N \\frac{|S_i|(|S_i|+1)}{2}$。
对于一个字符串 SS 和整数 LLRR,我们用 S\[L, R\] 表示 SS 的第 LL 到第 RR 个字符组成的子串。

长度为 MM 的整数三元组序列 $((K_1, L_1, R_1), (K_2, L_2, R_2), \\ldots, (K_M, L_M, R_M))$ 需要满足以下条件:

  • MM 个元素两两不同。
  • 对于所有 1leqileqM1 \\leq i \\leq M,满足 1leqKileqN1 \\leq K_i \\leq N1leqLileqRileqSKi1 \\leq L_i \\leq R_i \\leq |S_{K_i}|
  • 对于所有 1leqileqjleqM1 \\leq i \\leq j \\leq M,满足在字典序中 S_{K_i}\[L_i, R_i\] \\leq S_{K_j}\[L_j, R_j\]

给定 QQ 个介于 11MM(包含)之间的整数 x1,x2,ldots,xQx_1,x_2,\\ldots, x_Q。对于每个 1leqileqQ1 \\leq i \\leq Q,找到一个可能的实例 (Kxi,Lxi,Rxi)(K_{x_i}, L_{x_i}, R_{x_i})。我们可以证明总是存在满足条件的整数三元组序列。如果存在多个满足条件的三元组,输出其中任意一个。另外,在不同的 xix_i 中,符合条件的三元组序列不必相同。

什么是字典序?当且仅当以下条件之一满足时,两个字符串 SSTT 满足 SleqTS \\leq T

  • SleqT|S| \\leq |T|S = T\[1, |S|\]
  • 存在 1leqkleqmin(S,T)1\\leq k\\leq \\min(|S|, |T|),使得对于所有 1leqileqk11\\leq i\\leq k-1SSTT 的第 ii 个字符相同,并且 SS 的第 kk 个字符在字母表中严格小于 TT 的第 kk 个字符。

约束条件

  • 1leqNleq1051 \\leq N \\leq 10^5
  • 1leqlvertSirvertleq1051 \\leq \\lvert S_i\\rvert \\leq 10^5
  • $\\displaystyle\\sum_{i=1}^N \\lvert S_i\\rvert\\leq 10^5$
  • 1leqQleq2times1051 \\leq Q \\leq 2\\times 10^5
  • $1 \\leq x_1<x_2<\\cdots<x_Q \\leq \\displaystyle\\sum_{i=1}^N \\frac{|S_i|(|S_i|+1)}{2}$
  • N,Q,x1,x2,ldots,xQN,Q,x_1,x_2,\\ldots,x_Q 是整数。
  • SiS_i 是一个由小写英文字母组成的字符串。

输入

输入通过标准输入给出,格式如下:

NN S1S_1 S2S_2 vdots\\vdots SNS_N QQ x1x_1 x2x_2 ldots\\ldots xQx_Q

输出

输出 QQ 行。第 ii 行应该包含满足条件的 (Kxi,Lxi,Rxi)(K_{x_i}, L_{x_i}, R_{x_i}) 的一种实例,以空格分隔。如果有多个三元组满足条件,可以输出任意一个。


示例输入 1

2
abab
cab
2
5 14

示例输出 1

1 3 4
2 1 1

我们有 M=16M=16。满足条件的一个可能的三元组序列是 $((1,1,1), (1,3,3), (2,2,2), (1,1,2), (1,3,4), (2,2,3), (1,1,3), (1,1,4), (1,2,2), (1,4,4), (2,3,3), (1,2,3), (1,2,4), (2,1,1), (2,1,2), (2,1,3))$。这些 (Ki,Li,Ri)(K_i,L_i, R_i) 按此顺序对应的 S_{K_i}\[L_i, R_i\] 序列为 (a, a, a, ab, ab, ab, aba, abab, b, b, b, ba, bab, c, ca, cab)。

请注意,即使我们交换第 55 个元素 (1,3,4)(1,3,4) 和第 44 个或第 66 个元素,这个序列仍然满足条件,所以 (Kx1,Lx1,Rx1)=(1,1,2),(2,2,3)(K_{x_1}, L_{x_1}, R_{x_1})=(1,1,2), (2,2,3) 也是可以接受的。


示例输入 2

3
a
a
ba
2
1 2

示例输出 2

1 1 1
1 1 1

我们有 M=5M=5。满足条件的三元组序列可以是
(1,1,1),(2,1,1),(3,2,2),(3,1,1),(3,1,2)(1,1,1), (2,1,1), (3,2,2), (3,1,1), (3,1,2) 或者 (2,1,1),(3,2,2),(1,1,1),(3,1,1),(3,1,2)(2,1,1), (3,2,2), (1,1,1), (3,1,1), (3,1,2),例如。

请注意,对于你打印出来的 (Kxi,Lxi,Rxi)(K_{x_i}, L_{x_i}, R_{x_i}),满足条件的序列并不需要在不同的 ii 中是相同的;换句话说,并不一定需要存在一个序列,其中对于所有 1leqileqQ1\\leq i\\leq Q,"xix_i 对应的元素是 (Kxi,Lxi,Rxi)(K_{x_i}, L_{x_i}, R_{x_i})。"


示例输入 3

10
gxgpuamkx
szhkbpphykin
ezplvfja
mopodotkrj
rimlvumuar
nexcfyce
eurgvjyos
dhvuyfvt
nrdyluacvra
ggwnpnzij
6
74 268 310 380 455 489

示例输出 3

3 1 2
4 4 5
4 3 7
9 6 6
6 6 6
2 2 12