P0654

Zju2672 Fibonacci Subsequence

Zju2672 Fibonacci Subsequence

给定一个包含 NN 个整数的序列 A1,A2,…,ANA_1,A_2,\ldots,A_N。

若一个整数序列满足对于任意 i≥3i\ge 3,均有

Ai=Ai−1+Ai−2,A_i=A_{i-1}+A_{i-2},

则称其为斐波那契数列。

从原序列中选择下标

1≤b1<b2<⋯<bk≤N,1\le b_1<b_2<\cdots<b_k\le N,

得到子序列 Ab1,Ab2,…,AbkA_{b_1},A_{b_2},\ldots,A_{b_k}。请找出其中最长的斐波那契子序列。

如果存在多个最长子序列,则输出下标序列 (b1,b2,…,bk)(b_1,b_2,\ldots,b_k) 按字典序最小的一个,即在原序列中位置最靠前的一个,而不是数值序列按字典序最小的一个。

输入格式

第一行包含一个整数 NN。

第二行包含 NN 个整数,依次表示 A1,A2,…,ANA_1,A_2,\ldots,A_N。

输出格式

如果最长斐波那契子序列的长度小于 33,则直接输出 00。

否则,第一行输出一个整数 Len\mathit{Len},表示最长斐波那契子序列的长度。

第二行输出 Len\mathit{Len} 个整数,表示对应的子序列。

样例输入

6
10 1 2 20 30 3

样例输出

3
10 20 30

数据范围

  • N≤3000N\le 3000;
  • 时间限制为 104 ms10^4\ \mathrm{ms};
  • 内存限制为 65536 KB65536\ \mathrm{KB}。

来源与许可

本题为 ZJU 2672「Fibonacci Subsequence」,题面与测试数据整理自 BZOJ 1987。

样例 1

输入

6
10 1 2 20 30 3

输出

3
10 20 30