Задача №115211. Красивые последовательности

Дано множество \(A\), элементами которого являются различные целые числа от \(1\) до \(8\).

Рассмотрим последовательность \([a_1, a_2, \ldots, a_n]\) из \(n\) целых чисел, каждое из которых выбрано из множества \(A\). Будем называть эту последовательность красивой , если для любого числа \(x\) все элементы последовательности, равные \(x\), находятся на расстоянии не меньше \(x\) друг от друга. Иначе говоря, для любого числа \(x\) и для любых двух индексов \(1 \le i < j \le n\), таких, что \(a_i = a_j = x\), должно выполняться неравенство \(j - i \ge x\).

Требуется посчитать количество красивых последовательностей для заданного числа \(n\) и множества \(A\), и вывести остаток от деления этого количества на число \(10^9+7\).

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

В первой строке ввода даны два целых числа \(n\) и \(m\) — длина последовательности и количество элементов множества \(A\) (\(1 \le n \le 100\), \(1 \le m \le 8\)).

Во второй строке ввода даны \(m\) различных целых чисел \(a_i\) в порядке возрастания — элементы множества \(A\) (\(1 \le a_i \le 8\), \(a_i < a_{i + 1}\)).

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

Выведите одно целое число — остаток от деления количества красивых последовательностей на число \(10^9 + 7\).

Система оценки

Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 5 \(A = \{1, 2\}\), \(n \le 10\) первая ошибка
2 10 \(A = \{1, 2\}\), \(n \le 30\) 1 первая ошибка
3 15 \(A = \{1, 2\}\) 1, 2 первая ошибка
4 20 \(A = \{1, k\}\) для \(2 \le k \le 8\) 1, 2, 3 первая ошибка
5 30 \(a_i \le 5\) 1, 2, 3 первая ошибка
6 20 нет 1, 2, 3, 4, 5 первая ошибка

Примечание

В примере красивыми являются последовательности \([1, 1, 1]\), \([1, 1, 2]\), \([1, 2, 1]\), \([2, 1, 1]\), \([2, 1, 2]\).

Последовательности \([2, 2, 2]\), \([1, 2, 2]\), \([2, 2, 1]\) красивыми не являются, так как в каждой из них существуют два элемента со значением \(2\), находящиеся на расстоянии \(1\) друг от друга.

Примеры
Входные данные
3 2
1 2
Выходные данные
5
Сдать: для сдачи задач необходимо войти в систему