Отборочный контест ICPC ЛУ 2020 и Открытая командная олимпиада КФУ 2020
A. Две подпоследовательности
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть перестановка $$$p$$$ целых чисел от $$$1$$$ до $$$n$$$. Она хочет разбить $$$p$$$ на две непересекающихся возрастающих подпоследовательности (не обязательно подряд идущих элементов) такие, что разница между длинами этих подпоследовательностей была бы максимально возможной. Заметим, что каждый элемент должен принадлежать хотя бы одной подпоследовательности. Пустая подпоследовательность тоже допустима. Помогите Алсу это сделать.

Входные данные

В первой строке находится единственное целое число $$$n$$$ ($$$1 \leq n \leq 5 \cdot 10^5$$$), количество элементов в перестановке. Вторая строка содержит $$$n$$$ целых чисел $$$p_i$$$ ($$$1 \leq p_i \leq n$$$), где $$$i$$$-е из них число равно $$$i$$$-му элементу перестановки. Гарантируется, что каждое число из множества $$$\{1, \ldots, n\}$$$ встречается среди $$$p_i$$$ ровно один раз.

Выходные данные

Выведите единственное целое число, максимальную разность между длинами подпоследовательностей. Если невозможно разбить перестановку на две непересекающиеся подпоследовательности, то нужно вывести $$$-1$$$.

Примеры
Входные данные
2
2 1
Выходные данные
0
Входные данные
4
4 2 3 1
Выходные данные
-1
Входные данные
10
2 4 5 1 6 3 7 8 9 10
Выходные данные
6
Входные данные
11
1 2 3 4 5 6 7 8 9 10 11
Выходные данные
11

B. Числа на круге
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Булата есть два целых числа $$$n$$$ и $$$k$$$. Он хочет определить, существует ли массив $$$a_0$$$, $$$a_1$$$, $$$\ldots$$$, $$$a_{n-1}$$$ со следующими свойствами:

  • Он содержит все целые числа из интервала $$$[0,n-1]$$$, и каждое целое число встречается ровно один раз.
  • Для каждого $$$i \in [0,n-1]$$$ справедливо утверждение $$$(a_i + a_{(i + 2) \pmod n}) \pmod k = 0$$$.
Помогите Булату в этом.
Входные данные

Даны два разделенные пробелом целых числа $$$n$$$ и $$$k$$$, длина массива и размер модуля ($$$2 \leq n \leq 10^9$$$, $$$1 \leq k \leq 10^9$$$).

Выходные данные

Если такой массив существует, то выведете «Yes», если не существует, то «No» (ответ нужно вывести без кавычек).

Примеры
Входные данные
4 2
Выходные данные
Yes
Входные данные
4 4
Выходные данные
No

C. Медиана прогулки
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть неориентированный граф с $$$n$$$ вершинами и $$$m$$$ рёбрами. Вершины пронумерованы целыми числами от $$$1$$$ до $$$n$$$. В каждой вершине записано число. В вершине с индексом $$$v$$$ записано число $$$c_v$$$.

Алсу называет прогулкой между вершинами $$$v_1$$$ и $$$v_k$$$ последовательность вершин $$$v_1$$$, $$$v_2$$$, $$$\ldots$$$, $$$v_k$$$ такую, что вершины $$$v_i$$$ и $$$v_{i+1}$$$ связаны ребром для всех $$$1 \leq i \leq k-1$$$. Заметим, что одна и та же вершина и даже одно и то же ребро может встречаться в прогулке несколько раз.

Алсу называет медианой $$$k$$$ чисел $$$\left\lfloor\frac{k}{2}+1 \right\rfloor$$$-е по величине число ($$$1$$$-е по величине число наименьшее). Скобки $$$\lfloor \rfloor$$$ означают округление вниз до ближайшего целого.

Алсу называет медианой прогулки значение, которое равно медиане всех чисел, написанных в вершинах, встречающихся в прогулке. Заметим, что если длина прогулки $$$k$$$, то надо рассматривать именно $$$k$$$ чисел (т.е. число, записанное на какой-то вершине, необходимо рассматривать столько раз, сколько эта вершина была посещена во время прогулки).

Помогите Алсу найти минимально возможное число среди медиан всех прогулок от вершины $$$1$$$ до вершины $$$n$$$.

Входные данные

В первой строке находится два разделенных пробелом целых числа $$$n$$$ ($$$2 \leq n \leq 10^5$$$) b $$$m$$$ ($$$0 \leq m \leq 2 \cdot 10^5$$$), количество вершин и ребер графа. Вторая строка содержит $$$n$$$ целых чисел $$$c_1$$$, $$$\ldots$$$, $$$c_n$$$ ($$$1 \leq c_i \leq 10^9$$$). Следующие $$$m$$$ строк содержат описание ребер. $$$i$$$-я строка содержит два числа $$$a_i$$$ и $$$b_i$$$ ($$$1 \leq a_i, b_i \leq n$$$), номер двух концов $$$i$$$-о ребра. Граф может содержать кратные ребра и петли.

Выходные данные

Выведите единственное целое число, минимально возможное значение среди медиан всех прогулок от вершины $$$1$$$ до вершины $$$n$$$. Если между вершинами $$$1$$$ и $$$n$$$ нет пути, то выведите $$$-1$$$.

Примеры
Входные данные
4 3
4 1 3 2
1 2
2 3
3 4
Выходные данные
3
Входные данные
3 3
1 2 3
1 2
2 1
3 3
Выходные данные
-1

D. Разбиение текста
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Булата есть строка $$$s$$$ длины $$$n$$$, которая содержит только строчные буквы английского алфавита (в нижнем регистре). Назовем последовательность букв словом, если она содержит хотя бы одну гласную и хотя бы одну согласную. На какое максимальное число слов Булат может разделить имеющуюся у него строку?

В этой задаче гласными считаются буквы a, i, o, u, e, y, а все остальные согласными.

Входные данные

Первая строка содержит единственное целое число $$$n$$$ ($$$1 \leq n \leq 10^5$$$), длину строки. Вторая строка содержит строку $$$s$$$, которая содержит только строчные буквы английского алфавита (в нижнем регистре).

Выходные данные

Выведите единственное целое число, максимальное число слов, на которое можно разбить строку. Если строку невозможно разбить нужным образом, то в этом случае выведите $$$0$$$.

Примеры
Входные данные
13
brownfoxjumps
Выходные данные
3
Входные данные
4
iota
Выходные данные
1
Входные данные
3
you
Выходные данные
0

E. Мороженое
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Булату приснилось, что он работает мороженщиком. Он продаёт порции мороженого, заполняя рожок в форме конуса до некоторого уровня, и кладет поверх него два ароматных шарика мороженого одинакового размера. Он очень щедрый и хочет класть шарики как можно большего размера. Оба шарика должны касаться основной порции мороженого. Шарики могут соприкасаться, но не могут пересекаться. Шарики могут прикасаться к рожку, но не пересекаться с ним. Какой максимальный возможный радиус шариков?

Во сне Булат живет в двухмерном пространстве. Поэтому рожок на самом деле представляет собой равнобедренный треугольник, а шарики — не сферы, а круги.

Даны

  • высота рожка $$$h$$$,
  • уровень основной порции мороженого внутри рожка $$$\ell$$$,
  • ширина основания рожка $$$w$$$.
Вычислите максимально возможный радиус шариков. Учтите, что могут быть различные конфигурации.

Входные данные содержат информацию о многих случаях, когда Булат во сне видел себя мороженщиком. Выведите ответ для каждого из этих случаев.

Входные данные

Первая строка содержит единственное целое число $$$t$$$, количество снов ($$$1 \leq t \leq 10^4$$$). Каждая из следующих $$$t$$$ строк содержит три разделенных пробелами целых числа $$$h$$$, $$$\ell$$$, $$$w$$$ ($$$1 \leq h, \ell, w \leq 10^9$$$, $$$h \gt \ell$$$), описание одного сна.

Выходные данные

Для каждого из снов выведите по одному действительному числу — максимальный радиус шариков. Каждое число должно быть в отдельной строке. Числа должны быть выведены с абсолютной или относительной погрешностью $$$10^{-6}$$$.

Пример
Входные данные
1
10 8 8
Выходные данные
1.908131846

F. Границы клеточек
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть полоска бумаги, которая состоит из $$$n$$$ последовательных квадратных клеточек. Клеточки пронумерованы слева направо от $$$1$$$ до $$$n$$$. В каждой клеточке записано одно целое число, которое может принимать значение $$$0$$$, $$$1$$$ или $$$2$$$. Обозначим число в $$$i$$$-й ячейке за $$$a_i$$$. Алсу может покрасить в черный любое количество левых или правых границ этих клеточек (в общем у ячеек $$$n+1$$$ границ). Можно ли покрасить границы клеток так, чтобы количество покрашенных границ у $$$i$$$ клетки равнялось числу $$$a_i$$$?

Например, если в клетках написаны числа $$$1~2~1~0~1~2$$$, то можно покрасить границы следующим образом:

Входные данные

Первая строка содержит единственное целое число $$$n$$$, число клеток ($$$1 \leq n \leq 10^5$$$). Следующая строка содержит $$$n$$$ разделенных пробелами целых чисел $$$a_1$$$, $$$\ldots$$$, $$$a_n$$$ ($$$0 \leq a_i \leq 2$$$), количество покрашенных границ, которое должно быть у ячеек $$$1$$$, $$$\ldots$$$, $$$n$$$.

Выходные данные

Если необходимое возможно сделать, выведите «Yes» в единственной строки. Если невозможно, выведите «No» (ответ нужно вывести без кавычек).

Примеры
Входные данные
6
1 2 1 0 1 2
Выходные данные
Yes
Входные данные
2
2 0
Выходные данные
No

G. Странные запросы
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Булата есть $$$n$$$ строк, и ему надо ответить на $$$q$$$ запросов. Каждый запрос состоит из двух строк $$$l_i$$$ и $$$r_i$$$. Для такого запроса ему нужно подсчитать количество строк из заданного набора таких, что либо $$$l_i$$$ является её префиксом, либо $$$r_i$$$ является её суффиксом, либо выполняются оба условия (таким образом, строка с префиксом $$$l_i$$$ и суффиксом $$$r_i$$$ одновременно считается один раз).

Помогите Булату ответить на запросы.

Входные данные

Первая строка содержит единственное целое число $$$n$$$ ($$$1 \leq n \leq 10^5$$$), количество строк. Далее даны сами $$$n$$$ строк (каждая дана в отдельной строке). Следующая строка содержит единственное целое число $$$q$$$ ($$$1 \leq q \leq 10^5$$$), количество запросов. Далее идут $$$q$$$ строк, описывающие запросы. $$$i$$$-я строка содержит $$$l_i$$$ и $$$r_i$$$ разделенные пробелом. Ни одна из строк во вводе не пуста.

Суммарная длина всех строк (включая запросы) не превышает $$$10^5$$$. Все строки состоят только из строчных букв английского алфавита.

Выходные данные

Для каждого из запросов в отдельной строке выведите по одному целому числу, количеству строк, содержащих либо необходимый префикс, либо суффикс, либо оба одновременно.

Пример
Входные данные
3
bat
eca
baca
1
ba ca
Выходные данные
3

H. Оптимизация DFS
ограничение по времени на тест
3 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть дерево с $$$n$$$ вершинами. У каждой вершины $$$v$$$ есть по два значения $$$a_v$$$ и $$$b_v$$$. Алсу хочет обработать $$$q$$$ запросов следующих типов:

  1. дана вершина $$$v$$$ и число $$$x$$$, присвоить $$$a_v = x$$$;
  2. дана вершина $$$v$$$, вывести $$$a_v$$$;
  3. дана вершина $$$v$$$, выполнить следующую процедуру эффективным образом.

    Изначально создать массив $$$\text{used}[1\ldots n]$$$ и заполнить его значениями false. Затем запустить функцию $$$\text{DFS}(v)$$$:


    DFS(v):
    {
    used[v] = true;
    for u from 1 to n do
    {
    if (u и v связаны ребром)
    and (used[u] == false)
    and (a[v] + b[u] == a[u] + b[v]) then
    {
    DFS(u);
    }
    }
    a[v] = b[v];
    }
Заметим, что массив $$$\text{used}$$$ является независимым для каждого из запросов третьего типа.

Помогите Алсу выполнить эти запросы.

Входные данные

Первая строка содержит два целых числа $$$1 \leq n, q \leq 5 \cdot 10^5 $$$. Вторая строка содержит $$$n$$$ целых чисел, где $$$i$$$-е из них — это начальное значение $$$a_i$$$ ($$$0 \leq a_i \leq 5\cdot10^5$$$). Третья строка содержит $$$n$$$ целых чисел, где $$$i$$$-е из них — это значение $$$b_i$$$ ($$$0 \leq b_i \leq 5\cdot10^5$$$).

Каждая из следующих $$$n-1$$$ строк описывает ребро дерева. $$$i$$$-я из них содержит два целых числа $$$u_i$$$ и $$$v_i$$$ ($$$1 \leq u_i, v_i \leq n$$$, $$$u_i \neq v_i$$$), индексы вершин, связанных $$$i$$$-м ребром. Гарантируется, что заданный граф является деревом.

Следующие $$$q$$$ строк содержат описание запросов. $$$i$$$-й запрос начинается с целого числа $$$t_i$$$ ($$$1 \leq t_i \leq 3$$$), которое обозначает тип запроса. Если $$$t_i = 1$$$, то следуют два целых числа $$$v_i$$$ и $$$x_i$$$ ($$$1 \leq v_i \leq n$$$, $$$0 \leq x_i \leq 5\cdot10^5$$$). Иначе дано только целое число $$$v_i$$$.

Выходные данные

Для каждого из запросов второго типа вывести по одному числу в отдельной строке, значение $$$a_v$$$.

Примеры
Входные данные
2 6
20 102
10 90
1 2
2 1
2 2
1 2 100
3 1
2 1
2 2
Выходные данные
20
102
10
90
Входные данные
6 6
20 30 30 60 60 70
10 20 30 40 50 60
1 2
2 4
2 5
1 3
3 6
1 3 40
3 1
2 1
2 6
2 2
2 4
Выходные данные
10
60
20
60

I. Странный MEX
ограничение по времени на тест
3 с
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Булата есть мультимножество целых чисел, которое изначально пусто. Ему нужно обработать $$$q$$$ запросов. Запросы приходят либо на добавление, либо на удаление одного целого числа из мультимножества. После каждого запроса ему необходимо вычислить максимальный возможный МEX мультимножества, который он может получить, если может применять следующие операции. С помощью одной операции можно взять элемент $$$x$$$, который встречается в мультимножестве как минимум дважды, удалить один из них и добавить либо $$$x-1$$$, либо $$$x+1$$$. Эти операции не влияют на мультимножество для следующего запроса.

MEX — это операция, которая означает «минимальный отсутствующий»: MEX мультимножества чисел равен наименьшему неотрицательному целому числу, которого нет в мультимножестве. Например, $$$\text{mex}(\{0,1,1,2,4,4\})=3$$$. Однако, в данной задаче с помощью разрешенных операций мультимножество может быть преобразовано в $$$\{0,1,2,3,4,5\}$$$, у которого MEX уже равен $$$6$$$.

Помогите Булату обработать запросы.

Входные данные

Первая строка содержит единственное целое число $$$q$$$ ($$$1 \leq q \leq 10^6$$$), количество запросов. Следующие $$$q$$$ строк описывают запросы. $$$i$$$-я из них содержит два целых числа $$$t_i$$$, $$$a_i$$$ ($$$1 \leq t_i \leq 2$$$, $$$0 \leq a_i \leq 10^6$$$):

  • если $$$t_i=1$$$, то необходимо добавить $$$a_i$$$ в мультимножество;
  • если $$$t_i=2$$$, то необходимо удалить один элемент $$$a_i$$$ из мультимножества.
Гарантируется, что для каждого запроса на удаление существует хотя бы одно соответствующее целое число в мультимножестве.
Выходные данные

После каждого из запросов выведите в отдельную строку единственное число, максимально возможное значение MEX мультимножества, если преобразовать его с помощью разрешенных операций.

Пример
Входные данные
9
1 0
1 1
1 1
1 2
1 4
1 4
2 1
2 2
1 4
Выходные данные
1
2
3
4
5
6
5
2
5

J. МЕХ для матрицы
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть два массива целых чисел $$$a$$$ и $$$b$$$. Массив $$$a$$$ длины $$$n$$$, а массив $$$b$$$ длины $$$m$$$. Она хочет найти любую матрицу $$$C$$$ размера $$$n \times m$$$ такую, чтобы она удовлетворяла всем указанным условиям:

  • Все целые числа из интервала $$$[0,n\cdot m-1]$$$ должны встречаться в $$$C$$$ ровно один раз.
  • MEX $$$i$$$-й строки должен равняться $$$a_i$$$,
  • MEX $$$j$$$-го столбца должен равняться $$$b_j$$$.

MEX — это операция, которая означает «минимальный отсутствующий»: MEX множества чисел равен наименьшему неотрицательному целому числу, которого нет в множестве. Например, $$$\text{mex}(\{0,1,2,4\})=3$$$.

Помогите Алсу построить такую матрицу.

Входные данные

Первая строка содержит два положительных целых числа $$$n$$$ и $$$m$$$, длины массивов $$$a$$$ и $$$b$$$, соответственно ($$$1 \leq n \cdot m \leq 10^5$$$). Вторая строка содержит $$$n$$$ целых чисел $$$a_1$$$, $$$\ldots$$$, $$$a_n$$$ ($$$0 \leq a_i \leq 10^9$$$). Третья строка содержит $$$m$$$ целых чисел $$$b_1$$$, $$$\ldots$$$, $$$b_m$$$ ($$$0 \leq b_i \leq 10^9$$$).

Выходные данные

Если такая матрица существует, то выведите «Yes» в первой строке, иначе выведите «No» (ответ нужно вывести без кавычек).

В случае, если матрица существует, необходимо вывести саму матрицу. Для этого выведите $$$n$$$ строк по $$$m$$$ целых чисел, где $$$j$$$-е число $$$i$$$-й строки — это элемент $$$C_{i,j}$$$. Каждое из целых чисел из интервала $$$[0,n\cdot m -1]$$$ должно встречаться в $$$C$$$ ровно один раз. Если существует несколько таких матриц, то выведите любую из них.

Примеры
Входные данные
2 2
2 0
1 0
Выходные данные
Yes
0 1 
3 2 
Входные данные
2 2
1 1
1 1
Выходные данные
No

K. Двоичная последовательность
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Булата есть двоичная последовательность из $$$n$$$ бит $$$a_1$$$, $$$\ldots$$$, $$$a_n$$$ (каждый бит может быть $$$0$$$ или $$$1$$$). Изначально все биты равны $$$0$$$. У Булата также есть $$$m$$$ пар индексов $$$(i,j)$$$ — это допустимые операции, которые можно применить к последовательности. Если он применяет операцию $$$(i,j)$$$, то $$$a_i$$$ меняется на $$$1-a_i$$$, а $$$a_j$$$ меняется на $$$1-a_j$$$.

Кроме того, Булат хочет получить последовательность из $$$n$$$ битов $$$b_1$$$, $$$\ldots$$$, $$$b_n$$$. Можно ли получить $$$b$$$ из $$$a$$$ применяя только допустимые операции (можно также не изменять массив совсем). Каждая из операций может быть применена ноль и или несколько раз, и операции могут быть применены в любом порядке.

Входные данные

Первая строка содержит единственное целое число, значение $$$n$$$ ($$$2 \leq n \leq 10^5$$$). Вторая строка содержит $$$n$$$ бит $$$b_1$$$, $$$\ldots$$$, $$$b_n$$$ ($$$0 \leq b_i \leq 1$$$).

Следующая строка содержит единственное целое число, значение $$$m$$$ ($$$1 \leq m \leq 10^5$$$). Следующие $$$m$$$ строк содержат по два числа $$$l_i$$$ и $$$r_i$$$, индексы для операции ($$$1 \leq l_i \lt r_i \leq n$$$). Не существует двух одинаковых операций.

Выходные данные

Если это возможно, то выведете «Yes», если нет, то «No» (ответ нужно вывести без кавычек).

Примеры
Входные данные
5
1 1 0 1 1
3
1 3
3 4
2 5
Выходные данные
Yes
Входные данные
2
0 1
1
1 2
Выходные данные
No

L. Падающие ящики
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Булат отвечает за хранилище, которое образовано двумя бесконечными диагональными стенами, соединенными в одной точке внизу. В хранилище есть $$$n$$$ квадратных ящиков одинакового размера. Ящики естественно притягиваются силой тяжести. Например, расположение ящиков может быть следующим:

Затем нижний ящик убирается из хранилища. Другие ящики начинают падать в освободившееся пространство, пока снова не будет достигнуто стабильное расположение. Ящики могут падать по-разному, в зависимости от того, заполняет ли пустой слот левый или правый верхний ящик. Например, на предыдущем рисунке есть 3 разных варианта:

Помогите Булату найти общее количество различных возможных сценариев по модулю $$$10^9+7$$$.

Входные данные

Первая строка содержит единственное целое число, количество ящиков $$$n$$$ ($$$1 \leq n \leq 10^5$$$). Следующие $$$n$$$ строк описывают ящики, $$$i$$$-я из них содержит два целых числа $$$x_i$$$ и $$$y_i$$$ ($$$1 \leq x_i, y_i \leq n$$$). Это координаты ящика в следующей системе координат: ряды ящиков, перпендикулярных левой стене хранилища, пронумерованы целыми числами, начиная с $$$1$$$, и мы обозначим эту ось через $$$x$$$; ряды ящиков, перпендикулярных правой стене хранилища, пронумерованы целыми числами, начиная с $$$1$$$, и обозначим эту ось через $$$y$$$. Ящик с координатами $$$(x_i,y_i)$$$ расположен на пересечении $$$x_i$$$-й и $$$y_i$$$-й таких строк соответственно.

Гарантируется, что данное расположение ящиков стабильно.

Выходные данные

Выведите единственное целое число — количество возможных сценариев падения ящиков по модулю $$$10^9+7$$$.

Пример
Входные данные
5
1 1
1 2
2 2
3 1
2 1
Выходные данные
3

M. Большая сумма
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У Алсу есть бесконечная таблица $$$A$$$. Строки и столбцы в ней нумеруется целыми числами $$$0$$$, $$$1$$$, $$$2$$$, и т.д. Число в $$$i$$$-й строке и $$$j$$$-м столбце равно $$$A_{i,j} = 2^i 3^j$$$.

$$$$$$ \begin{array}{c||c|c|c|c|c} & 0 & 1 & 2 & 3 & \ldots \\ \hline\hline 0 & 1 & 3 & 9 & 27 & \ldots \\ \hline 1 & 2 & 6 & 18 & 54 & \ldots \\ \hline 2 & 4 & 12 & 36 & 108 & \ldots \\ \hline 3 & 8 & 24 & 72 & 216 & \ldots \\ \hline \vdots & \vdots & \vdots & \vdots & \vdots & \ddots \end{array} $$$$$$

Помогите Алсу обработать $$$q$$$ запросов вида $$$(i_1,i_2,j_1,j_2)$$$, где $$$i_1 \leq i_2$$$ и $$$j_1 \leq j_2$$$. Для каждого запроса вам нужно вычислить значение

$$$$$$\sum_{i=i_1}^{i_2} \sum_{j=j_1}^{j_2} A_{i,j}$$$$$$ по модулю $$$10^9+7$$$.

Входные данные

Первая строка содержит единственное целое число $$$q$$$, количество запросов ($$$1 \leq q \leq 10^4$$$). Далее идут описания самих запросов. $$$i$$$-я из следующих $$$q$$$ строк содержит четыре целых числа $$$i_1$$$, $$$i_2$$$, $$$j_1$$$, $$$j_2$$$, описание $$$i$$$-го запроса ($$$0 \leq i_1 \leq i_2 \leq 10^9$$$, $$$0 \leq j_1 \leq j_2 \leq 10^9$$$).

Выходные данные

Для каждого из запросов в отдельной строке выведите соответствующую сумму по модулю $$$10^9+7$$$.

Пример
Входные данные
1
1 2 0 1
Выходные данные
24