Республиканская олимпиада по информатике 2018 года за 9 класс | Казахстанские олимпиады

Задача B. Охрана природы

Ограничение по времени Ограничение по памяти
2 секунды 512 мегабайт

Темирулан — активист охраны природы и защиты животных округа Каспий. Недавно во время прогулки по родному краю он обнаружил редкое растения типа ЖранУ. Растения ЖранУ являются особенными. Они растут только в тени под большими, старыми деревьями. Темирулан проверил nn подряд идущих деревьев, и для каждого из них узнал можно ли под ним посадить растение ЖранУ. Темирулану растение ЖранУ сильно понравилось, и он решил, что каждый год в течении следующих qq лет будет делать посадку этого растение. При посадке растения он выбирает некоторое количество подряд идущих деревьев от ll до rr, и под каждым деревом делает посадку растение ЖранУ если можно посадить. После посадки растения их обязательно нужно полить, каждый год Темирулан поливает все растения посаженные в этот год. Для поливки растения Темирулан взял с собой ведро размера kk, которым можно полить все растения ЖранУ которые растут под kk подряд идущими деревьями. Темирулан хочет полить каждое посаженное растение хотя бы один раз. Какое минимальное количество ведер воды для поливки всех новых посаженных растении? Обратите внимание, каждый год Темирулан поливает растения не учитывая предыдущий год.

Формат входного файла

Первая строка входных данных содержит два целых числа nn и tt (1n2105,0t1)(1 \le n \le 2\cdot10^5, 0 \le t \le 1) — количество деревьев и константное число для чтения входных данных. Далее следующие nn чисел описывает ii-е дерево — если ii-е число 0, то нельзя посадить растение под ii-м деревом, иначе можно. Деревья нумеруются с нуля. В следующей строке число qq (1q2105)(1 \le q \le 2\cdot10^5) — количество посадок растений. Затем в следующих qq строках даны по три целых числа: aia_i bib_i cic_i (0ai,bi,ci109)(0 \le a_i, b_i, c_i \le 10^9) Обратите внимание, что концы отрезков [li,ri][l_i, r_i] и число kik_i закодированы, и чтобы их получить нужно выполнить соответствующие преобразования:

li=(ai(tlastans))(mod n),ri=(bi(tlastans))(mod n),ki=((ci(tlastans))(mod n))+1l_i = (a_i \oplus (t*lastans)) \mod n, \quad r_i = (b_i \oplus (t*lastans)) \mod n, \quad k_i = ((c_i \oplus (t*lastans)) \mod n) +1

где lastanslastans — последний ответ на запрос (изначально lastanslastans равен 00). Если значение lil_i получилось больше значения rir_i, то нужно поменять местами значения lil_i и rir_i. Здесь \oplus обозначает операцию побитового XOR или исключающего ИЛИ. Данная операция существует во всех современных языках программирования, например, в языках C++ и Java она обозначена как <<\string^>>, в Pascal — как <>. Операция a(mod b)a \mod b означает взятие остатка от деления aa на bb.

Формат выходного файла

Выведите qq строк. В ii-й строке выведите одно число — ответ для ii-го запроса.

Примеры

Вход

7 0
0 1 1 0 1 1 0
6
0 2 1
0 6 0
0 6 1
1 4 2
0 6 5
1 5 5

Выход

1
4
2
2
1
1