배수 피하기

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

크기 NN인 집합 A=A_1,A_2,,A_NA = \\{A\_1, A\_2, \cdots, A\_N\\}와 정수 KK가 주어집니다. AA의 부분집합 SS좋은 집합이라는 것은 다음 조건을 모두 만족시킴을 의미합니다.

  • SS에는 두 개 이상의 수가 포함되어 있습니다.
  • SS의 서로 다른 두 원소 a,bSa, b \in S에 대해서, a+ba + bKK의 배수가 아닙니다.

좋은 집합의 개수를 출력하세요.

입력

첫 줄에 정수의 개수 NN과 문제의 정수 KK가 공백으로 구분되어 주어집니다. (2N,K100,000)(2 \le N, K \le 100\\,000)

둘째 줄에 NN개의 서로 다른 정수 A_1,A_2,,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어집니다. (1A_i109)(1 \le A\_i \le 10^9)

출력

첫 줄에 좋은 집합의 개수를 출력하세요. 단, 수가 매우 커질 수 있으니 1,000,000,007(=109+7)1\\,000\\,000\\,007 (= 10^9+7)로 나눈 나머지를 출력하세요. 1,000,000,0071\\,000\\,000\\,007은 소수입니다.