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

Задача . C. Шаасс и лампочки


В ряд выстроено n лампочек. Лампочки пронумерованы от 1 до n слева направо. Изначально некоторые лампочки включены. Шаасс хочет включить все лампочки. За один ход он может включить лампочку (которая на тот момент должна быть выключенной), если у нее есть хотя бы одна соседняя включенная лампочка.

Юноша знает изначальное состояние лампочек и ему интересно, сколько есть различных способов включить все лампочки. Пожалуйста, посчитайте искомое количество способов по модулю 1000000007 (109 + 7).

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

В первой строке записаны два целых числа n и m, где n — общее количество лампочек, а m — количество изначально включенных лампочек, (1 ≤ n ≤ 1000, 1 ≤ m ≤ n). Вторая строка содержит m различных целых чисел, каждое — от 1 до n, включительно — номера изначально включенных лампочек.

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

В единственной строке выведите количество различных возможных способов включить все лампочки по модулю 1000000007 (109 + 7).


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

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

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