Flower_Rainbow_and_Rhythm
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}Flower 定义二元组 (x, y) 是一个相似度为 k 的相似二元组,当且仅当需要满足 x\bmod k = y\bmod k,即 x 和 y 对 k 的余数相同。例如 k = 3 时:
\hspace{23pt}\bullet\,(1, 4) 是一个相似二元组,因为 1\bmod 3 = 14\bmod 3 = 1
\hspace{23pt}\bullet\,(26, 14) 是一个相似二元组,因为 26\bmod 3=214\bmod 3=2
\hspace{23pt}\bullet\,(3, 4)(7, 9) 则不是一个相似二元组。

\hspace{15pt}Flower 给了 Rainbow 一个长度为 n 的数组 a 和一个相似度 k,Rainbow 需要判断是否能将数组 a 中的所有 n 个元素 两两配对,即你需要把这个长度为 n 的数组恰好分为 \tfrac{n}{2} 个二元组,使得每个元素都恰好只属于一个相似二元组。

【名词解释】
\hspace{15pt}\bmod:代表取模运算。例如,5 除以 3 的余数为 2,因此式子 5 \bmod 3 的值为 2

输入描述:

\hspace{15pt}第一行输入两个整数 n, k \left(2 \leq k \leq n \leq 2 \times 10^5\right),分别表示数组 a 的长度和相似度,且保证 n 是偶数;
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n \left(0 \leq a_i \leq 10^9\right),表示数组中的元素。

输出描述:

\hspace{15pt}若可以满足上述要求,输出 \texttt{Yes};否则输出 \texttt{No}
示例1

输入

复制
4 3
1 1 4 4

输出

复制
Yes

说明

\hspace{15pt}可以选择分为 (1, 1)(4, 4) 两个相似二元组。
示例2

输入

复制
6 6
1 2 3 7 8 9

输出

复制
Yes

说明

\hspace{15pt}可以选择分为 (1, 7)(2, 8)(3, 9) 三个相似二元组。
示例3

输入

复制
4 3
100 200 300 400

输出

复制
No
示例4

输入

复制
2 2
8 9

输出

复制
No