Олимпиадный тренинг

Задача . Counting Haybales


Задача

Темы:
У Фермера Джона есть \(N\) (\(1\leq N \leq 5000\)) стогов из тюков сена. Для каждого \(i\in [1,N]\), \(i\)-ый стог имеет высоту \(h_i\) (\(1\le h_i\le 10^9\)) тюков. Беси может выполнять следующую операцию:

  • Если высоты соседних стогов сена отличаются ровно на 1, она может переместить верхний тюк сена с более высокого стога на менее высокий.

Сколько конфигураций по модулю \(10^9+7\) можно получить после выполнения данной операции конечное число раз? Две конфигурации рассматриваются как одна и та же если для всех \(i\) каждый стог сена содержит одно и тоже количество тюков в обоих стогах.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит \(T\) (\(1\le T\le 10\)), количество независимых тестов каждый из которых должен быть решён правильно.

Каждый тест состоит из \(N\), и последовательности \(N\) высот. Гарантируется, что сумма всех \(N\) во всех \(T\) тестах не превысит \(5000\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(T\) строк по одной для каждого теста.


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

time 500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя