Динамічна подільність
Limits: 4 sec., 512 MiB
Зеник записав на шматку паперу ціле число із n цифр, i-та з яких початково рівна di (1≤i≤n, нумерація зліва направо). Марічка ж загадала одне ціле число k.
Тепер вони хочуть опрацювати q операцій, кожна з яких описана трьома числами li, ri та ci. Для кожної операції вони виконують наступні дії:
Зеник вирізає послідовність цифр від li-ї до ri-ї включно.
Далі, він склеює усі інші цифри разом, зберігаючи їх відносний порядок.
Після цього, він вставляє вирізаний проміжок цифр одразу після перших ci цифр, посунувши усі наступні цифри. Таким чином, він утворює нове число із рівно n цифр.
Після цього, Марічка знаходить одне ціле число — остачу від ділення записаного зараз на папері числа на k.
Допоможіть їм знайти відповіді після виконання усіх операцій в заданому порядку.
Зауважте, що число, яке записне на папері, може містити ведучі нулі.
Input
У першому рядку задано три цілих числа n, k та q — кількість цифр, число, остачу від ділення на яке знаходить Марічка та кількість операцій відповідно.
У другому рядку задано послідовність із n цифр di (без пробілів) — початкове число.
У наступних q рядках описано операції в порядку їх виконання. Опис кожної операції складається із трьох чисел, розділених пробілами — li, ri та ci.
Output
Для кожної операції виведіть одне ціле число в окремому рядку — остачу від ділення поточного числа на k.
Constraints
1≤n,q≤2⋅105,
1≤k≤109,
0≤di≤9,
1≤li≤ri≤n,
0≤ci≤n−(ri−li+1).
Samples
Input (stdin) | Output (stdout) |
---|---|
5 1000000000 4 12345 2 4 2 1 2 1 3 5 0 2 2 2 | 15234 21534 53421 54321 |
Input (stdin) | Output (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 |