#d2734. 子串的循环挪动

子串的循环挪动

子串的循环挪动

题目描述

​ 给出一个字符串 ss,你需要执行 mm 个任务。每个任务给出两个下标 li,ril_i, r_i 和一个整数 kik_i(字符串的下标从 11 开始),表示你需要循环挪动 ss 的子串 s[li...ri] kis[l_i...r_i]\ k_i 次。请从前到后依次执行给出的每个任务。

​ 字符串的循环挪动操作:将最后一个字符移到第一个字符的位置,并且将其他所有字符向右移一个位置。

​ 比如:如果字符串 ss 是 abacaba,一个任务为 l1=3,r1=6,k1=1l_1=3,r_1=6,k_1=1,那么答案为 abbacaa。接下来一个任务为 l2=1,r2=4,k2=2l_2=1,r_2=4,k_2=2,那么我们会得到 baabcaa。

输入格式

​ 第一行一个字符串 ss,该字符串只包含小写英文字符。

​ 第二行一个整数 mm,表示任务个数。

​ 接下来 mm 行每行有三个整数 li,ril_i,r_i 和 kik_i。

输出格式

​ 输出执行了 mm 个任务后的最终的字符串 ss。

样例输入

abacaba
2
3 6 1
1 4 2

样例输出

baabcaa

数据范围

​ 对于所有数据保证,1≤∣s∣≤100001\leq |s| \leq 10000(∣s∣|s| 表示字符串 ss 的长度),1≤m≤3001\leq m\leq 300,1≤li≤ri≤∣s∣1\leq l_i\leq r_i\leq |s|,1≤ki≤10000001\leq k_i \leq 1000000。