描述
小Q在研发一种数据混淆的算法时不慎将重要的文档都给混淆了。幸运的是,将这些文档校正对于他来说并不是难事。他凭借着敏锐的观察力成功地用肉眼完成了校正。
为了防止这种情况再次发生,小Q希望开发一种文本校正工具,他的目标是将一个文本串T分成连续的3段,要求每段都不能为空,然后按一定顺序将这3段从左往右拼接起来,将其还原为初始文本串S。
在进行了大量肉眼校正工作之后,小Q需要休息一下,因此他把这个任务交给了你。请写一个程序,判断是否可以还原,并给出一个合法的还原方案。
格式
输入格式
第一行包含一个正整数Case,表示需要进行的校正次数。
接下来Case个部分依次表示每次校正工作,每个部分第一行包含两个正整数n,m,分别表示文本串的长度以及字符集的大小。
每个部分第二行包含n个正整数S1,S2,...,Sn,表示S串。
每个部分第三行包含n个正整数T1,T2,...,Tn,表示T串。
输出格式
对于每次校正工作,若无解,则仅输出一行NO,否则第一行输出YES,接下来三行每行两个正整数li,ri,按拼接顺序依次表示T的3个子串。
若存在多种还原方案,请输出任意一种。本题提供 Special Judge。
样例1
样例输入1
样例输出1
限制
有 20% 的数据,n,m≤6,Case≤50000 且 ∑n,∑m≤300000。
有 30% 的数据,n,m≤2000,Case≤10 且 ∑n,∑m≤20000。
有 30% 的数据,n,m≤200000,Case≤30 且 ∑n,∑m≤200000。
有 20% 的数据,n,m≤1000000,Case≤30 且 ∑n,∑m≤1000000。
对于所有数据有,3≤n 且 1≤Si,Ti≤m。
来源
SDOI 2017 Round2 Day2