벽돌
시간 제한3초메모리 제한128 MB
벽돌 N개를 먼저 둘로 나누고 양쪽을 같은 횟수로 더 쪼갤 때 만들 수 있는 소수 더미 묶음 개수를 구합니다.
문제
게임을 끝낸 빅토르와 헥토르는 좀 더 생산적인 일, 바로 이웃집 별장 짓기를 돕기로 했습니다.
공사장에 방금 벽돌 개가 도착했고, 두 사람은 이 벽돌을 여러 개의 더 작은 더미로 나누어야 합니다. 먼저 둘이 함께 전체 더미 하나를 두 개의 더 작은 더미로 나눕니다. 그다음부터는 각자 따로 작업하는데, 한 번의 작업은 기존 더미 하나를 골라 비어 있지 않은 두 개의 더 작은 더미로 나누는 것입니다.
두 사람이 잠시 쉬려고 손을 멈추었을 때, 다음 두 가지를 발견하고 놀랐습니다.
- 두 사람이 각자 혼자서 나눈 횟수가 서로 정확히 같았습니다.
- 완성된 모든 더미의 벽돌 개수가 소수였습니다.
두 사람이 만들 수 있는 서로 다른 최종 더미 구성은 몇 가지일까요? 어떤 더미 크기에 대해 한 구성이 다른 구성보다 그 크기의 더미를 더 많이 가지고 있으면 두 구성은 서로 다른 것으로 봅니다. 다시 말해, 하나의 구성은 더미 크기들의 다중집합으로 구별됩니다.
입력
첫째 줄에 테스트 케이스의 수 ()가 주어집니다.
둘째 줄에 나머지를 구할 정수 ()이 주어집니다.
이어지는 개의 줄에는 각각 해당 케이스에서 배달된 벽돌의 개수 ()이 하나씩 주어집니다.
출력
각 테스트 케이스마다, 벽돌 개로 만들 수 있는 서로 다른 유효한 더미 구성의 수를 으로 나눈 나머지를 한 줄에 하나씩 출력합니다.
힌트
일 때는 처음에 함께 더미를 와 (둘 다 소수)으로 나누고 이후 혼자서 나누는 작업을 전혀 하지 않는 방법이 유일하므로 답은 입니다.
일 때는 두 가지 방법이 있습니다.
- 더미를 과 (둘 다 소수)로 나누고 혼자서 나누는 작업을 하지 않습니다.
- 더미를 와 로 나눈 뒤, 각자 짜리 더미 하나를 와 로 나누어 최종적으로 가 됩니다.
따라서 답은 입니다.