매일 아침 첫 햇살이 비치면 이반은 마을 가로등의 전구를 모두 꺼야 한다. 마을에는 곧게 뻗은 도로가 하나뿐이고, 가로등은 도로 한쪽에만 서 있다. 가로등에는 왼쪽부터 오른쪽으로 1번부터 N번까지 번호가 붙어 있다.
이반은 날마다 시작 가로등 p를 하나 정해서 그 전구를 먼저 끈다. 그다음부터는 전기를 아끼려고 다음 규칙을 따른다. 매 단계에서 아직 켜져 있는 전구 가운데 왼쪽으로 가장 가까운 것과 오른쪽으로 가장 가까운 것을 보고, 전력이 더 큰 쪽을 끈다. 왼쪽에 켜진 전구가 없으면 오른쪽으로 가장 가까운 전구를 끄고, 오른쪽에 켜진 전구가 없으면 왼쪽으로 가장 가까운 전구를 끈다. 두 전구의 전력이 같으면 이반은 둘 중 아무거나 골라서 끌 수 있다. 그래서 시작 위치가 같아도 전구를 끄는 순서는 여러 가지가 나올 수 있다.
시작 위치가 p일 때 서로 다른 순서의 개수를 M(p)라고 하자. 주어진 시작 위치 K개에 대해 각각 M(Pi)를 109+7로 나눈 나머지를 구하는 프로그램을 작성하라.
첫째 줄에 가로등의 개수 N과 시작 위치의 개수 K가 공백을 사이에 두고 주어진다.
둘째 줄에 전구의 전력 A1,A2,…,AN이 공백을 사이에 두고 주어진다.
셋째 줄에 궁금한 시작 위치 P1,P2,…,PK가 공백을 사이에 두고 주어진다. 같은 위치가 여러 번 주어질 수 있다.
K개의 줄을 출력한다. i번째 줄에는 M(Pi)를 109+7로 나눈 나머지를 출력한다.
전력이 3,5,1,4,3인 가로등 다섯 개를 생각하자. 이반이 3번에서 시작하면 3번을 꺼서 (3,5,×,4,3)이 된다. 왼쪽 전구의 전력이 더 크므로 2번을 끄면 (3,×,×,4,3)이 된다. 이제 오른쪽 전구의 전력이 더 크므로 4번을 끄면 (3,×,×,×,3)이 된다. 남은 1번과 5번은 전력이 같아서 어느 쪽을 먼저 꺼도 되므로 순서가 두 가지로 갈린다.
같은 가로등에서 5번부터 시작하면 오른쪽에 켜진 전구가 한 번도 없어서 오른쪽에서 왼쪽으로 차례대로 끄는 순서 하나뿐이다.