P3785 [SDOI2017] 文本校正

题目描述

小Q在研发一种数据混淆的算法时不慎将重要的文档都给混淆了。幸运的是,将这些文档校正对于他来说并不是难事。他凭借着敏锐的观察力成功地用肉眼完成了校正。 为了防止这种情况再次发生,小Q希望开发一种文本校正工具,他的目标是将一个文本串$T$分成连续的$3$段,要求每段都不能为空,然后按一定顺序将这$3$段从左往右拼接起来,将其还原为初始文本串$S$。 在进行了大量肉眼校正工作之后,小Q需要休息一下,因此他把这个任务交给了你。请写一个程序,判断是否可以还原,并给出一个合法的还原方案。

输入格式

第一行包含一个正整数$Case$,表示需要进行的校正次数。 接下来$Case$个部分依次表示每次校正工作,每个部分第一行包含两个正整数$n$,$m$,分别表示文本串的长度以及字符集的大小。 每个部分第二行包含$n$个正整数$S_1,S_2,\dots ,S_n$,表示$S$串。 每个部分第三行包含$n$个正整数$T_1,T_2,\dots ,T_n$,表示$T$串。

输出格式

对于每次校正工作,若无解,则仅输出一行"NO"(不含引号),否则第一行输出"YES"(不含引号),接下来三行每行两个正整数$l_i$,$r_i$,按拼接顺序依次表示$T$的$3$个子串。 若存在多种还原方案,请输出任意一种。

说明/提示

对于$100\%$的数据,$3 \leq n \leq 1000000$,$1 \leq Si,Ti \leq m \leq 1000000$。 ![](https://cdn.luogu.com.cn/upload/pic/5550.png) spj by @Wen_kr