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

Гауранг вырос в таинственной вселенной. Перед ним стоят $$$n$$$ 2D плоскостей одна за другой. Он пускает частицу с периодом распада $$$k$$$ в направлении плоскостей.

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

Например, если есть две плоскости, и выпущена частица с периодом распада $$$3$$$ (направлена вправо), то происходит следующий процесс: (здесь $$$D(x)$$$ означает одну частицу с периодом распада $$$x$$$)

  1. первая плоскость создает $$$D(2)$$$ влево и пропускает $$$D(3)$$$ дальше вправо;
  2. вторая плоскость создает $$$D(2)$$$ влево и пропускает $$$D(3)$$$ дальше вправо;
  3. первая плоскость пропускает $$$D(2)$$$ дальше влево и создает $$$D(1)$$$ вправо;
  4. вторая плоскость пропускает $$$D(1)$$$ дальше вправо ($$$D(1)$$$ не может создавать копии).

В конце мультимножество $$$S$$$ всех частиц — это $$$\{D(3), D(2), D(2), D(1)\}$$$. (Смотрите примеры для визуального отображения этого теста.)

Гауранг не справляется со сложностью этого процесса, когда количество плоскостей слишком велико. Помогите Гаурангу узнать размер мультимножества $$$S$$$ по заданным $$$n$$$ и $$$k$$$.

Так как размер мультимножества может быть очень большим, выведите его по модулю $$$10^9+7$$$.

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

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

В первой строке записано количество наборов входных данных $$$t$$$ ($$$1 \le t \le 100$$$). Затем следуют $$$t$$$ строк, в каждой записаны два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n, k \le 1000$$$).

Сумма $$$n$$$ по всем наборам входных данных не превосходит $$$1000$$$. Сумма $$$k$$$ по всем наборам входных данных не превосходит $$$1000$$$. Все наборы входных данных в одном тесте различны.

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

Выведите $$$t$$$ целых чисел. $$$i$$$-е число должно являться ответом на $$$i$$$-й набор входных данных.

Примеры
Входные данные
4
2 3
2 2
3 1
1 3
Выходные данные
4
3
1
2
Входные данные
3
1 1
1 500
500 250
Выходные данные
1
2
257950823
Примечание

Здесь следует объяснение первого примера, состоящего из четырех наборов входных данных.

Набор входных данных 1: ($$$n = 2$$$, $$$k = 3$$$) уже объяснен в условии задачи.

На картинке ниже изображена симуляция. Каждая цветная прямая показывает путь одной из частиц. Как можно видеть, всего есть четыре различных частицы в мультимножестве. Обратите внимание, что вертикальные промежутки между отраженными частицами введены только для визуальной ясности (как ранее описывалось, частицы не сталкиваются друг с другом)

Набор входных данных 2: ($$$n = 2$$$, $$$k = 2$$$) выглядит так:

  1. первая плоскость создает $$$D(1)$$$ влево и пропускает $$$D(2)$$$ дальше вправо;
  2. вторая плоскость создает $$$D(1)$$$ влево и пропускает $$$D(2)$$$ дальше вправо;
  3. первая плоскость пропускает $$$D(1)$$$ дальше влево ($$$D(1)$$$ не может создавать копии).

Итоговый размер мультимножества $$$\{D(1), D(1), D(2)\}$$$ равен трем.

Набор входных данных 3: ($$$n = 3$$$, $$$k = 1$$$) — здесь есть три плоскости, но период распада всего один. Поэтому новые копии не создаются, когда одна частица пролетает через плоскости. Поэтому ответ один.

Набор входных данных 4: ($$$n = 1$$$, $$$k = 3$$$) — здесь только одна плоскость. Частица создает новую копию влево. Мультимножество $$$\{D(2), D(3)\}$$$ имеет размер два.