#P15849. [Roi2012 Regional]Game with Numbers数字游戏

[Roi2012 Regional]Game with Numbers数字游戏

题目描述

今天数学课上,Petya 和 Vasya 学习了等差数列的概念。

公差为 dd 的等差数列是一个序列:

a1,a2,,aka_1,a_2,\ldots,a_k

其中任意相邻两项之差都等于 dd。例如,序列

2,5,8,112,5,8,11

是一个公差为 33 的等差数列。

课后,Petya 和 Vasya 发明了一种新的数字游戏。

篮子里有 nn 个筹码,筹码上写着互不相同的整数:

a1,a2,,an.a_1,a_2,\ldots,a_n.

游戏过程中,玩家轮流从篮子中取出筹码放到桌上。Petya 先手。每次操作如下:

  1. 当前玩家从篮子中取出一个筹码放到桌上;
  2. 然后他必须说出一个整数 d2d\ge 2,使得当前桌面上所有筹码上的数字都是某个公差为 dd 的等差数列中的项。

注意,桌面上的数字不要求是该等差数列中连续的项。

例如,如果桌面上的数字是 2,8,112,8,11,那么可以说出 d=3d=3,因为这些数字都是等差数列

2,5,8,112,5,8,11

中的项。

如果玩家无法行动,则他失败。无法行动可能有两种原因:

  • 篮子里已经没有筹码;
  • 无论从篮子里拿哪一个筹码,放到桌上后都无法找到满足条件的 dd

例如,若篮子中的数字为 2,3,5,72,3,5,7,则 Petya 可以获胜。他第一步应放下数字 33。此时他有很多选择,例如可以说 d=3d=3

接下来 Vasya 有两种主要选择:

  1. Vasya 放下 55,并说 d=2d=2。然后 Petya 放下 77,也说 d=2d=2。此时桌面上为 3,5,73,5,7,篮子中只剩 22。Vasya 无法再放下 22,因为此后找不到合法的 dd,所以 Vasya 输。
  2. Vasya 放下 77,也可以说 d=2d=2。然后 Petya 放下 55,也说 d=2d=2。Vasya 同样会面对桌面为 3,5,73,5,7、篮子中只剩 22 的局面,因此输掉游戏。

注意,Petya 的其他第一步都会导致失败。如果他先放 22,Vasya 可以放 77,然后 Petya 无法行动;如果他先放 5577,Vasya 可以放 22,然后 Petya 也无法行动。

请编写程序,根据给定的筹码数量 nn 和数字 a1,a2,,ana_1,a_2,\ldots,a_n,判断 Petya 是否可以保证获胜,并找出所有能使 Petya 必胜的第一步。

输入格式

第一行包含整数 nn

1n2001 \le n \le 200

第二行包含 nn 个互不相同的整数 a1,a2,,ana_1,a_2,\ldots,a_n

1ai1051 \le a_i \le 10^5

相邻整数之间恰好用一个空格分隔。

输出格式

第一行输出整数 kk,表示 Petya 可以选择的必胜第一步数量。

如果 Vasya 无论如何都能获胜,则输出 0

第二行输出 kk 个互不相同的整数,表示所有必胜的第一步数字。若 k=0k=0,可以不输出第二行。

一个数字称为必胜数字,如果 Petya 第一步放下写有该数字的筹码后,无论 Vasya 如何行动,Petya 都能获胜。

样例 1

输入

4
2 3 5 7

输出

1
3

样例 2

输入

2
2 4

输出

0

样例解释

第一个样例见题目描述。

第二个样例中,无论 Petya 第一步放哪一个筹码,Vasya 都可以放下另一个筹码,随后 Petya 因篮子为空无法行动,因此 Petya 必败。