斐波那契序列
题号:NC21339
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

一个序列如果被称为斐波那契序列,说明这个序列除了前两个元素的其他元素都等于他之前两个元素的和,特殊的,只有0个,1个或者2个元素的序列都为斐波那契序列
比如 (1, 1, 2, 3, 5, 8)  (4, 2, 6, 8, 14, 22)都是斐波那契序列

现在有一个整数的集合S
1:牛牛从中挑选若干个数(可能是0个)组合成一个斐波那契序列的子序列
2:牛妹对剩下的数进行同样的操作
3:最后将牛牛与牛妹挑选出来的序列进行拼接,牛妹的序列接在牛牛序列的后面,拼接后的序列必须是有序的,并且他们希望元素个数越多越好

输出拼接序列中最多可能的元素个数

输入描述:

第一行输入一个整数n (1 ≤ n ≤ 50)
第二行输入n个整数表示S集合
数据范围为 1-10^8,S集合每个数都是不同的

输出描述:

输出一个整数
示例1

输入

复制
5
8 1 20 3 10

输出

复制
5

说明

牛牛选择了1 3 8,是 1 1 2 3 5 8 13的子序列
牛妹选择了10 20
示例2

输入

复制
6
19 47 50 58 77 99

输出

复制
4
示例3

输入

复制
1
512

输出

复制
1
示例4

输入

复制
8
3 5 7 10 13 15 20 90

输出

复制
7

说明

牛牛选择了3 5 7 是 3 2 5 7的子序列
牛妹选择了10 15 20 90 是10 5 15 20 35 55 90的子序列
示例5

输入

复制
10
1 2 3 5 8 13 21 34 55 89

输出

复制
10

备注:

子任务1: n <= 10
子任务2: n <= 20
子任务3: 无限制