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