#L2994. #2994. 「JOISC 2015 Day1」复制粘贴 2

#2994. 「JOISC 2015 Day1」复制粘贴 2

#2994. 「JOISC 2015 Day1」复制粘贴 2

题目描述

译自 JOISC 2015 Day1 T1「コピー&ペースト2 / Copy and Paste 2」

复制粘贴是文本编辑器最重要的功能之一,JOI 社正在开发一个可以快速处理复制粘贴操作的文本编辑器。作为 JOI 社的一名优秀的程序员,你的任务是测试复制粘贴功能的核心代码。由于 JOI 社危在旦夕,你需要确保这段核心代码准确高速。

具体的操作如下。初始时文件内容为一个字符串 SS,随后进行 NN 次复制粘贴操作。第 ii 次操作,先复制字符串中位置为 AiA_iBiB_i 之间的子串,并将这部分插入到字符串的 CiC_i 位置。这里,位置 xx 表示从字符串开头向后数 xx 个字符与后一个字符之间的位置(位置 00 表示字符串的开头)。例如,字符串 copypaste\text{copypaste} 的位置 66 为字符 a\text{a}s\text{s} 之间的位置,位置 99 表示字符 e\text{e} 的后面,也就是说,它代表了字符串的结尾。但是,如果操作后字符串长度超过 MM,就会从字符串结尾删除字符,直到字符串长度为 MM

给定文本 SSNN 次操作,你的任务是求出经过这 NN 次操作后文本 SS 的前 KK 个字符。


输入格式

第一行两个正整数 K,MK, M,分别表示最后要输出文本 SS 的前 KK 个字符,文本 SS 长度的上限为 MM

第二行一个字符串 SS,表示初始文本。

第三行一个正整数 NN,表示操作次数。

接下来 NN 行,每行三个正整数 Ai,Bi,CiA_i, B_i, C_i,表示将文本 SS 中位置为 AiA_iBiB_i 的部分复制插入到 CiC_i 位置。


输出格式

一行一个长度为 KK 的字符串,表示最终答案。


样例 1

输入

2 18
copypaste
4
3 6 8
1 5 2
4 12 1
17 18 0

输出

ac

解释
初始文本为 copypaste\text{copypaste}

  • 第一次操作,将位置 33 到位置 66 之间的文本 ypa\text{ypa} 复制到位置 88,文本变为 copypastypae\text{copypastypae}
  • 第二次操作,将位置 11 到位置 55 之间的文本 opyp\text{opyp} 复制到位置 88,文本变为 coopyppypastypae\text{coopyppypastypae}
  • 第三次操作,将位置 44 到位置 1212 之间的文本 yppypast\text{yppypast} 复制到位置 11,文本变为 cyppypastoopyppypastypae\text{cyppypastoopyppypastypae}。但是文本长度上限 M=18M=18,从右向左删除文本中字符至文本长度为 1818,文本变为 cyppypastoopyppypa\text{cyppypastoopyppypa}
  • 第四次操作,将位置 1717 到位置 1818 之间的文本 a\text{a} 复制到位置 00,文本变为 acyppypastoopyppypa\text{acyppypastoopyppypa}。但是文本长度上限 M=18M=18,从右向左删除文本中字符至文本长度为 1818,文本变为 acyppypastoopyppyp\text{acyppypastoopyppyp}

最终,输出文本 acyppypastoopyppyp\text{acyppypastoopyppyp} 的前 K=2K=2 个字符,即为 ac\text{ac}


样例 2

输入

6 100
jjooii
3
5 6 2
4 6 1
1 2 3

输出

joioji

数据范围与提示

对于全部数据,
1K2001\le K\le 200,
1M1091\le M\le 10^9,
KSmin{M,2×105}K\le |S|\le \min\{M,2\times 10^5\},
1N2×1051\le N\le 2\times 10^5
保证 SS 由小写英文字母构成。
LiL_i 为第 ii 次操作之后文本 SS 的长度,保证 0Ai<BiLi0\le A_i<B_i\le L_i, 0CiLi0\le C_i\le L_i

详细子任务及附加限制如下:

  • 子任务 11010 分):N2×103N\le 2\times 10^3, M2×103M\le 2\times 10^3
  • 子任务 29090 分):无附加限制。