- Описание
- Отправленные решения
1. Шары и корзины
Перед вами корзин с шарами, в -й корзине лежит шаров. Вам поступают два вида запросов:
0 l r
— положить в корзины с номерами от до по 1 дополнительному шару;1 l r
— посчитать, сколько существует способов выбрать ровно по 1 шару из каждой корзины с номерами от до . Все шары считаются различными, а два способа считаются различными, если существует корзина, из которой были вытащены различные шары.
Дополнительно гарантируется, что запросов типа 0
суммарно не более 400.
Поскольку количество способов выбрать шары из корзин может быть очень большим, требуется вывести остаток от деления этого числа на .
Формат ввода
Первая строка содержит число () — количество корзин.
Вторая строка содержит последовательность из целых чисел (), разделённых пробелом, — изначальное количество шаров в каждой корзине.
Третья строка содержит число () — количество запросов.
Следующие строк содержат запросы в формате, описанном выше ().
Формат вывода
Для каждого запроса вида 1 l r
выведите в новой строке остаток от деления количества способов выбрать по одному шару из каждой корзины соответствующего диапазона на .
Примечание
В приведённом примере изначально есть 6 способов выбрать по шару из каждой корзины. Второй запрос добавляет по шару в первую и вторую корзины, а третий запрос относится к первой и второй корзинам, после прошлого запроса содержащим 2 и 3 шара соответственно.
Ограничения
Ограничение времени
3 с
Ограничение памяти
256 МБ
Пример 1
3
1 2 3
3
1 1 3
0 1 2
1 1 2
6
6