Fibonacci-ish

Yash has recently learnt about the Fibonacci sequence and is very excited about it. He calls a sequence Fibonacci-ish if

  1. the sequence consists of at least two elements
  2. f0 and f1 are arbitrary
  3. fn + 2 = fn + 1 + fn for all n ≥ 0.

You are given some sequence of integers a1, a2, ..., an. Your task is rearrange elements of this sequence in such a way that its longest possible prefix is Fibonacci-ish sequence.

Input

The first line of the input contains a single integer n (2 ≤ n ≤ 1000) — the length of the sequence ai.

The second line contains n integers a1, a2, ..., an (|ai| ≤ 109).

Output

Print the length of the longest possible Fibonacci-ish prefix of the given sequence after rearrangement.

Examples

Input
3
1 2 -1
Output
3
Input
5
28 35 7 14 21
Output
4

Note

In the first sample, if we rearrange elements of the sequence as  - 1, 2, 1, the whole sequence ai would be Fibonacci-ish.

In the second sample, the optimal way to rearrange elements is , 28.

从已知元素中寻找最长斐波那契长度。

个人非常喜欢的一道题,比较综合。用到了一些套路,比如用map标记大数,以及加上pair来标记一组数。

开始有往dp方向考虑,想先给数列排个序,然后依次往右找。但是两数相加不一定会变大,和可能会在左边,比如本题负数情况。

再一个每次寻找下一个值时,都要重新使用标记,为了防止后效性,使用递归来处理。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<set>
#include<map>
#include<algorithm>
#define MAX 1005
#define INF 0x3f3f3f3f
using namespace std; int a[MAX],c;
map<int,int> mp;
map<pair<int,int>,int> mmp;
void dfs(int x,int y){ //递归寻找 if(mp[x+y]>) {
c++;
mp[x+y]--;
dfs(y,x+y);
mp[x+y]++;
}
}
int main()
{
int n,i,j;
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%d",&a[i]);
mp[a[i]]++; //大数标记
}
int max=;
for(i=;i<=n;i++){
for(j=;j<=n;j++){ //考虑负数情况
if(i!=j){
if(mmp[make_pair(a[i],a[j])]) continue;
mmp[make_pair(a[i],a[j])]=; //标记一对数,优化防T
c=;
mp[a[i]]--;
mp[a[j]]--;
dfs(a[i],a[j]);
mp[a[i]]++;
mp[a[j]]++;
if(c>max) max=c;
}
}
}
printf("%d\n",max);
return ;
}

最新文章

  1. Java 8 forEach简单例子
  2. JavaScript 全局属性/函数
  3. 【niubi-job——一个分布式的任务调度框架】----安装教程
  4. 【扩展】Canvas绘制列表的尝试
  5. 关于C语言中的typedef
  6. VB6关于判断模态窗体的问题
  7. python--第十六天总结(bootstrap)
  8. html 的实践
  9. Cocos Creator 音频API控制调频
  10. Python 第一个程序_1
  11. android(java) 开发过程中经验及总结记录
  12. Android - Navigation Drawer
  13. 【转】内存分析工具 MAT 的使用
  14. .Net C#向远程服务器Api上传文件
  15. SqlServer 删除重复记录
  16. 查找CPU使用率过高的线程
  17. Hbase到Solr同步常用操作
  18. POJ1019 Number Sequence
  19. 解决:Python爬取https站点时SNIMissingWarning和InsecurePlatformWarning
  20. sql中递归查询

热门文章

  1. Elipse clean后无法编译出class文件
  2. Ajax学习笔记(2)--load()方法
  3. 如果数据需要被多个应用程序消费的话,推荐使用 Kafka,如果数据只是面向 Hadoop 的,可以使用 Flume
  4. segnet 编译与测试
  5. 我的Android进阶之旅------>Handlerr.removeCallbacksAndMessages(null)的作用
  6. centos 7 PostgreSQL一些简单问题以及解决办法
  7. Codeforces Round #553 (Div. 2) 题解
  8. join()方法作用
  9. ios审核过程十大常见被拒问题
  10. linux应用之bugfree的安装及配置