谁是说谎者
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

在全国最大的算法竞赛交流平台上,举行着一场别开生面的 “说谎大赛”。

这场比赛参赛选手分为两组:一组是说谎组,另一组是侦探组。说谎组的目标是不让侦探组侦破谁说谎了,而侦探组的目标是侦破说谎组中谁说谎了。

说谎组包含 n + 1 位选手。每位选手都需要说一句话,格式为 “说谎组中至少有……位选手说谎了”。对于每个 1 \le i \le n,第 i 位选手会宣称说谎组中至少有 a_i 位选手说谎了。请注意,每位选手所说 “说谎组中至少有……位选手说谎了” 所评价的对象是场上所有选手所说 “说谎组中至少有……位选手说谎了” 这句话的真实性。

侦探组包含牛客 2026 年愚人节比赛的所有参赛选手(当然,也包括你)。你需要侦破说谎组中哪些选手说谎了。如果答案不唯一,回答任何一种都算正确。

已知说谎组中至少有 3 位选手说谎了。你能侦破说谎选手的编号吗?

输入描述:

输入第一行包含一个整数 n2 \le n \le 15)。

第二行包含用空格隔开的 n 个整数 a_1, a_2, \dots, a_n0 \le a_i \le n + 1)。

输出描述:

如果答案存在,你需要在一行中输出用空格隔开的 p + 1 个整数 p, b_1, b_2, \dots, b_p,其中 p 表示说谎选手的数量,b_1, b_2, \dots, b_p 表示说谎选手的编号。如果答案不唯一,回答任何一种都算正确。允许按任意顺序输出说谎选手编号,但不应出现重复编号。

如果答案不存在,就说明你可能被骗了,你需要在一行中输出 -1
示例1

输入

复制
5
4 0 4 5 0

输出

复制
3 1 3 4
示例2

输入

复制
13
4 2 7 5 3 1 7 6 5 4 3 2 1

输出

复制
-1