求
简单同余
比赛题目
时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 256MB,其他语言 512MB
分数:100
描述
小海狸有 n 个数, 他想找出一个大小为 k 的子集, 使子集中任意两个数对 m 取模后的值都相等, 请你帮助他。如果能找到多个这样的子集,输出子集中的数对 m 取模后的值最小的方案。
注意:小海狸的 n 个数可能有相同的数字重复出现,那么相同的数字子集中也可以重复出现。
输入描述
输入
第一行包含三个整数 n,k 和 m(2≤k≤n≤100000,1≤m≤100000) 一小海狸的整数数量,可以选择的整数数量以及一个除数。
第二行包含 n 个整数 a1,a2,…,an(0≤ai≤10
9
) 一小海狸的所有数字。
输出描述
输出
如果无法得到满足条件的子集,输出"No"(不带引号)。
否则,在第一行输出"Yes"(不带引号)。在第二行输出 k 个整数 b1,b2,…,bk 表示子集选择的数字(按a数组的顺序输出)。如果有多种可能的方案,请选择子集中的数对 m 取余余数最小的一种。
用例输入 1
3 2 3
1 8 4
用例输出 1
Yes
1 4
用例输入 2
3 3 3
1 8 4
用例输出 2
No
用例输入 3
4 3 5
2 7 7 7
用例输出 3
Yes
2 7 7