알파벳 수프

시간 제한10초메모리 제한128 MB

문제

페터는 집에서 점심을 먹는데, 안타깝게도 오늘 점심은 수프다. 페터가 수프를 별로 좋아하지 않는다는 것을 아는 어머니는, 알파벳 글자·숫자·그 밖의 여러 기호 모양을 한 파스타 조각으로 특별한 수프를 끓였다. 어머니는 특별한 칼로 $S$가지 서로 다른 모양의 파스타 조각을 얼마든지 만들 수 있다. 수프 한 그릇에는 항상 정확히 $P$개의 파스타 조각이 들어 있고, 수프가 아주 걸쭉해서 조각들은 절대 자리를 옮기지 않는다.

그런 노력에도 페터는 여전히 오늘 메뉴가 마음에 들지 않아, 평생 며칠이나 수프를 먹어야 하냐고 묻는다. 어머니는 매일 서로 다른 수프를 내주겠다고 약속한다. 즉, 모든 자리의 모양이 이전에 나온 어떤 수프와 완전히 똑같은 날은 하루도 없다. 다만 파스타 조각의 개수 $P$와 조각이 떠 있는 위치는 매일 같다. 스스로 영리하다고 여기는 페터는 이것만으로도 아주 오랫동안 수프를 먹게 될 수 있음을 깨닫고, 경우의 수를 줄이기 위해 이미 나온 배치를 회전시켜 얻을 수 있는 그릇도 받지 않겠다고 선언한다.

그림 1: 페터 그릇의 위에서 본 모습

그릇을 원점을 중심으로 하고 반지름이 $2$인 원이라고 하자. 모든 기호는 원점에서 거리 $1$만큼 떨어진 곳에, 밀리도 단위로 주어진 각도에 떠 있다. 두 그릇은, 한쪽 그릇을 중심을 기준으로 회전시켜 기호의 위치와 기호 자체가 양쪽에서 모두 일치하게 만들 수 있으면 같은 것으로 본다.

프로그램에는 어머니가 쓸 수 있는 기호의 수 $S$와, 각 파스타 조각의 위치를 정하는 $P$개의 각도(시계 방향, 밀리도 단위)가 주어진다. 어머니가 만들 수 있는 서로 다른 그릇이 몇 가지인지 구하라. 이 수가 매우 커질 수 있으므로 소수 $100000007$로 나눈 나머지를 출력한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫 줄에는 두 정수 $S$($2 \le S \le 1000$, 사용할 수 있는 모양의 수)와 $P$($P > 0$, 파스타 조각의 수)가 주어진다. 이어지는 $P$개의 줄에는 각 조각의 각도 $A$($0 \le A < 360000$)가 시계 방향 밀리도 단위로 한 줄에 하나씩 주어진다. $P$개의 각도는 모두 서로 다르다.

테스트 케이스 사이는 빈 줄로 구분한다. 마지막 테스트 케이스 다음에는 $S = P = -1$인 줄(즉 -1 -1)이 오고, 이 줄에서 입력이 끝난다.

출력

각 테스트 케이스마다 어머니가 만들 수 있는 서로 다른 그릇의 수를 $100000007$로 나눈 나머지를 한 줄에 하나씩 출력한다.