춤추는 원
시간 제한2초메모리 제한512 MB
원형으로 둘러선 n명의 아이에게 이진 복장을 배정하되, 각 아이를 중심으로 한 연속 구간의 합 홀짝을 나타내는 n개의 조건을 모두 만족하는 배정의 수를 1e9+7로 나눈 나머지로 구한다.
문제
할로윈이다. 당신은 동네 아이들을 위해 모닥불과 춤을 준비했다. 명의 아이들이 불 주위에서 춤을 추기 위해 원을 이루어 모였다. 각 아이는 주황색 호박 또는 검은 박쥐, 두 가지 무시무시한 의상 중 하나를 입고 있다. 바깥이 어두워서 아이들이 모닥불 뒤로 지나갈 때에만 몇 명의 아이를 볼 수 있다. 아이들이 고르게 서 있지 않기 때문에 매 순간 볼 수 있는 아이의 수는 다르다. 특히, 춤추는 원을 따라 시계 방향으로 아이들에게 번을 붙이면, 어느 순간에든 시야의 중심에 있는 아이 와 원을 따라 아이 앞쪽의 명, 뒤쪽의 명을 볼 수 있다. 즉, 번 아이를 볼 수 있으며, 물론 인덱스는 으로 나눈 나머지로 계산한다.
아이들이 춤추는 동안 시간을 보내기 위해, 당신은 문득 궁금해진다. 각 아이 에 대해, 아이 를 중심으로 하는 명의 아이 중 주황색 호박 의상을 입은 아이의 수가 짝수인지 홀수인지만 안다고 하자. 그러면 각 아이가 어떤 의상을 입고 있는지 유일하게 알아낼 수 있을까? 일 때는 분명히 가능하다. 하지만 와 가 항상 0이 아니면 어떨까? 가능한 답이 여러 개이거나 아예 없을 수도 있을까? 당신은 저녁에 집에 돌아와 컴퓨터 앞에 앉으면 이 문제를 조사하기로 한다.
입력
입력의 첫 줄에는 원에 있는 아이의 수를 나타내는 정수 이 주어진다 (). 다음 개의 줄은 서로 다른 순간에 볼 수 있는 아이들을 나타낸다. 번째 줄(0부터 시작)에는 공백으로 구분된 음이 아닌 정수 가 주어진다 (, ). 아이 가 시야의 중심에 있을 때 명의 아이를 볼 수 있다 (아이 의 왼쪽으로 명, 오른쪽으로 명). 이면 그중 주황색 호박 의상을 입은 아이의 수가 짝수이고, 이면 홀수이다.
출력
관측과 일치하도록 각 아이에게 의상을 배정하는 방법의 수를 계산하라. 이 수는 클 수 있으므로 로 나눈 나머지를 출력한다. (모든 홀짝 제약을 만족하는 의상 배정이 하나도 없으면 0을 출력한다.)