과녁 맞히기
시간 제한1초메모리 제한1024 MB
각 줄의 맨 위나 맨 아래 과녁을 하나씩 맞혀 모든 과녁을 없애는 순서의 수를 10^9+7로 나눈 나머지로 구합니다.
문제
번호가 부터 까지 적힌 개의 과녁이 있다. 이 과녁들은 개의 줄에 매달려 있다. 번째 줄에는 개의 과녁이 매달려 있으며, 모든 의 합은 이다.
승환이는 과녁을 한 번에 하나씩 정확히 맞혀서, 총 번 활을 쏴 모든 과녁을 맞히려 한다. 활을 쏠 때마다 승환이는 줄을 하나 고르고, 그 줄에서 가장 위 또는 가장 아래에 있는 과녁을 맞힌다. 승환이의 화살은 마법의 화살이라서, 화살에 맞은 과녁은 사라진다. 줄에 과녁이 하나만 남아 있으면 그 과녁은 맨 위이자 맨 아래 과녁이다. 줄에 과녁이 없으면 그 줄은 선택하지 않는다. 이때 승환이가 과녁을 쏘는 순서의 경우의 수를 구하시오.
입력
첫 번째 줄에 과녁의 개수 ()과 줄의 개수 ()이 주어진다.
두 번째 줄에 각 줄에 매달린 과녁의 개수 (; )이 공백으로 구분되어 주어진다.
출력
승환이가 과녁을 쏘는 순서의 경우의 수를 로 나눈 나머지를 첫 번째 줄에 출력한다.
단, 은 소수이다.