P4061spark搭塔 | ||
|
Description
Spark用积木搭了n座塔,第i座塔的高度为ai.
他发明了一种有趣增高操作:每一次他都会从1到n,在第i(i<n)座塔的上面再搭上一个和第i+1座塔一样高的塔,第n座塔没法增高,只好扔掉了。这样做了一次之后Spark就只剩下了n-1座塔(n的值变为n-1)。于是他很有耐心的重复了许多次,直到最后只剩下了一座塔,设它的高度为H。
Spark很迷信,他有一个幸运数字m,于是他把H%m当成最终的美观度。
他惊奇的发现,最开始n座塔中有一些塔的高度不论是多少,最终的美观度都不会变!他想知道哪些塔的高度不会影响美观度。
Input Format
一行两个整数n,m ( 1<=n<=100 000, 2<=m<=10^9).
对30%的数据 n<=30,m<=100
Output Format
第一行一个整数N,表示不影响美观度的塔的个数。
第二行N个整数,第i个数 bi 表示第 bi 座塔的高度不影响美观度,请从小到大输出 bi。
Sample Input 1
3 2
Sample Output 1
1
2
Sample Input 2
7 6
Sample Output 2
2
2 6
Hint
样例解释:
第一次操作后变成 a1 + a2, a2 + a3.
第二次操作后变成 a1 + 2a2 + a3.
又因为m=2,最终的美观度显然与 a2。没有关系.
Source spark改编自Uva1635