Динамічна подільність
Обмеження: 4 сек., 512 МіБ
Зеник записав на шматку паперу ціле число із n цифр, i-та з яких початково рівна di (1≤i≤n, нумерація зліва направо). Марічка ж загадала одне ціле число k.
Тепер вони хочуть опрацювати q операцій, кожна з яких описана трьома числами li, ri та ci. Для кожної операції вони виконують наступні дії:
Зеник вирізає послідовність цифр від li-ї до ri-ї включно.
Далі, він склеює усі інші цифри разом, зберігаючи їх відносний порядок.
Після цього, він вставляє вирізаний проміжок цифр одразу після перших ci цифр, посунувши усі наступні цифри. Таким чином, він утворює нове число із рівно n цифр.
Після цього, Марічка знаходить одне ціле число — остачу від ділення записаного зараз на папері числа на k.
Допоможіть їм знайти відповіді після виконання усіх операцій в заданому порядку.
Зауважте, що число, яке записне на папері, може містити ведучі нулі.
Вхідні дані
У першому рядку задано три цілих числа n, k та q — кількість цифр, число, остачу від ділення на яке знаходить Марічка та кількість операцій відповідно.
У другому рядку задано послідовність із n цифр di (без пробілів) — початкове число.
У наступних q рядках описано операції в порядку їх виконання. Опис кожної операції складається із трьох чисел, розділених пробілами — li, ri та ci.
Вихідні дані
Для кожної операції виведіть одне ціле число в окремому рядку — остачу від ділення поточного числа на k.
Обмеження
1≤n,q≤2⋅105,
1≤k≤109,
0≤di≤9,
1≤li≤ri≤n,
0≤ci≤n−(ri−li+1).
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
5 1000000000 4 12345 2 4 2 1 2 1 3 5 0 2 2 2 | 15234 21534 53421 54321 |
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
14 83 7 33758621355151 6 8 1 2 10 3 11 14 6 3 8 8 2 11 4 7 12 6 2 13 0 | 27 1 62 6 60 60 6 |