// ඞඞඞඞඞඞ you sus
#include <bits/stdc++.h>
#define __builtin_popcount __builtin_popcountll
#define BIT(x, i) (((x)>> (i))& 1)
#define MASK(x) (1LL<< (x))
#define sqr(x) ((x)* (x))
#define MOD 1000000007
#define template(i) for(long long i= 1; i<= n; i++)
using namespace std;
typedef long long ll;
template<class X,class Y>
void minimize(X &x,const Y y) {
if (x>y) x= y;
}
template<class X,class Y>
void maximize(X &x,const Y y) {
if (x<y) x= y;
}
template<class T>
T Abs(const T x) {
return (x<0?-x:x);
}
template <class T>
void Mod(T &t) {
if(t>= MOD) t-= MOD;
}
template <class X, class Y>
ll Gcd(const X a, const Y b){
if(b== 0) return a;
else return Gcd(b, a% b);
}
template <class X, class Y>
ll Lcm(const X a, const Y b){
return ((a*b)/gcd(a, b));
}
template <class X, class Y>
void Add(X &x, const Y y){
if((x+= y)>= MOD) x-= MOD;
}
const int maxm= (int)1e6+ 3, maxn= (int)1e5 +3, maxpst= (int)17e5, maxb= (int)1e3+ 3;
const ll INF= (ll)1e18+ 3;
vector<ll> adj[maxb];
vector<ll> topo;
ll n, a[maxb], f[maxb], ans= 0, vis[maxb];
void Dfs(ll u){
vis[u]= 1;
for(long long i= 0; i< adj[u].size(); i++){
ll v= adj[u][i];
if(!vis[v])
Dfs(v);
}
topo.push_back(u);
}
void printans(){
cout<< ans;
}
void solve(){
for(int i= 1; i<= n; i++){
for(int j= 1; j<= n; j++){
for(int k= 1; k<= n; k++){
if((i== j)|| (i== k)|| (j== k)) continue;
if(a[i]+ a[j]== a[k]){
adj[i].push_back(k);
adj[j].push_back(k);
}
}
}
}
for(long long i= 1; i<= n; i++){
if(vis[i]== 0){
Dfs(i);
}
}
reverse(topo.begin(), topo.end());
for(long long i= 1; i<= n; i++){
f[i]= 1;
}
for(long long i= 0; i< n; i++){
ll u= topo[i];
for(long long j= 0; j< adj[u].size(); j++){
ll v= adj[u][j];
maximize(f[v], f[u]+ 1);
}
maximize(ans, f[u]);
}
}
void input(){
cin>> n;
for(long long i= 1; i<= n; i++){
cin>> a[i];
}
solve();
printans();
}
int main()
{ ios_base::sync_with_stdio(0);cin.tie(0);
#define task ""
if(fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
if(fopen("task.inp", "r")){
freopen("task.inp", "r", stdin);
freopen("task.out", "w", stdout);
}
input();
return 0;
}
Ly8g4Lae4Lae4Lae4Lae4Lae4LaeIHlvdSBzdXMKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIF9fYnVpbHRpbl9wb3Bjb3VudCBfX2J1aWx0aW5fcG9wY291bnRsbAojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KT4+IChpKSkmIDEpCiNkZWZpbmUgTUFTSyh4KSAoMUxMPDwgKHgpKQojZGVmaW5lIHNxcih4KSAoKHgpKiAoeCkpCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSB0ZW1wbGF0ZShpKSBmb3IobG9uZyBsb25nIGk9IDE7IGk8PSBuOyBpKyspCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7Cgp0ZW1wbGF0ZTxjbGFzcyBYLGNsYXNzIFk+CiAgICB2b2lkIG1pbmltaXplKFggJngsY29uc3QgWSB5KSB7CiAgICAgICAgaWYgKHg+eSkgeD0geTsKICAgIH0KdGVtcGxhdGU8Y2xhc3MgWCxjbGFzcyBZPgogICAgdm9pZCBtYXhpbWl6ZShYICZ4LGNvbnN0IFkgeSkgewogICAgICAgIGlmICh4PHkpIHg9IHk7CiAgICB9CnRlbXBsYXRlPGNsYXNzIFQ+CiAgICBUIEFicyhjb25zdCBUIHgpIHsKICAgICAgICByZXR1cm4gKHg8MD8teDp4KTsKICAgIH0KCnRlbXBsYXRlIDxjbGFzcyBUPgogICAgdm9pZCBNb2QoVCAmdCkgewogICAgICAgIGlmKHQ+PSBNT0QpIHQtPSBNT0Q7CiAgICB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGxsIEdjZChjb25zdCBYIGEsIGNvbnN0IFkgYil7CiAgICAgICAgaWYoYj09IDApICAgcmV0dXJuIGE7CiAgICAgICAgZWxzZSByZXR1cm4gR2NkKGIsIGElIGIpOwogICAgfQoKdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBsbCBMY20oY29uc3QgWCBhLCBjb25zdCBZIGIpewogICAgICAgIHJldHVybiAoKGEqYikvZ2NkKGEsIGIpKTsKICAgIH0KCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgogICAgdm9pZCBBZGQoWCAmeCwgY29uc3QgWSB5KXsKICAgICAgICBpZigoeCs9IHkpPj0gTU9EKSB4LT0gTU9EOwogICAgfQoKY29uc3QgaW50IG1heG09IChpbnQpMWU2KyAzLCBtYXhuPSAoaW50KTFlNSArMywgbWF4cHN0PSAoaW50KTE3ZTUsIG1heGI9IChpbnQpMWUzKyAzOwoKY29uc3QgbGwgSU5GPSAobGwpMWUxOCsgMzsKCnZlY3RvcjxsbD4gYWRqW21heGJdOwoKdmVjdG9yPGxsPiB0b3BvOwpsbCBuLCBhW21heGJdLCBmW21heGJdLCBhbnM9IDAsIHZpc1ttYXhiXTsKCnZvaWQgRGZzKGxsIHUpewogICAgdmlzW3VdPSAxOwogICAgZm9yKGxvbmcgbG9uZyBpPSAwOyBpPCBhZGpbdV0uc2l6ZSgpOyBpKyspewogICAgICAgIGxsIHY9IGFkalt1XVtpXTsKICAgICAgICBpZighdmlzW3ZdKQogICAgICAgICAgICBEZnModik7CiAgICB9CiAgICB0b3BvLnB1c2hfYmFjayh1KTsKfQoKdm9pZCBwcmludGFucygpewogICAgY291dDw8IGFuczsKfQoKdm9pZCBzb2x2ZSgpewogICAgZm9yKGludCBpPSAxOyBpPD0gbjsgaSsrKXsKICAgICAgICBmb3IoaW50IGo9IDE7IGo8PSBuOyBqKyspewogICAgICAgICAgICBmb3IoaW50IGs9IDE7IGs8PSBuOyBrKyspewogICAgICAgICAgICAgICAgaWYoKGk9PSBqKXx8IChpPT0gayl8fCAoaj09IGspKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGlmKGFbaV0rIGFbal09PSBhW2tdKXsKICAgICAgICAgICAgICAgICAgICBhZGpbaV0ucHVzaF9iYWNrKGspOwogICAgICAgICAgICAgICAgICAgIGFkaltqXS5wdXNoX2JhY2soayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IobG9uZyBsb25nIGk9IDE7IGk8PSBuOyBpKyspewogICAgICAgIGlmKHZpc1tpXT09IDApewogICAgICAgICAgICBEZnMoaSk7CiAgICAgICAgfQogICAgfQogICAgcmV2ZXJzZSh0b3BvLmJlZ2luKCksIHRvcG8uZW5kKCkpOwogICAgZm9yKGxvbmcgbG9uZyBpPSAxOyBpPD0gbjsgaSsrKXsKICAgICAgICBmW2ldPSAxOwogICAgfQogICAgZm9yKGxvbmcgbG9uZyBpPSAwOyBpPCBuOyBpKyspewogICAgICAgIGxsIHU9IHRvcG9baV07CiAgICAgICAgZm9yKGxvbmcgbG9uZyBqPSAwOyBqPCBhZGpbdV0uc2l6ZSgpOyBqKyspewogICAgICAgICAgICBsbCB2PSBhZGpbdV1bal07CiAgICAgICAgICAgIG1heGltaXplKGZbdl0sIGZbdV0rIDEpOwogICAgICAgIH0KICAgICAgICBtYXhpbWl6ZShhbnMsIGZbdV0pOwogICAgfQp9Cgp2b2lkIGlucHV0KCl7CiAgICBjaW4+PiBuOwogICAgZm9yKGxvbmcgbG9uZyBpPSAxOyBpPD0gbjsgaSsrKXsKICAgICAgICBjaW4+PiBhW2ldOwogICAgfQogICAgc29sdmUoKTsKICAgIHByaW50YW5zKCk7Cn0KCmludCBtYWluKCkKCnsgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7CiAgICAjZGVmaW5lIHRhc2sgIiIKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsICJyIikpewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBpZihmb3BlbigidGFzay5pbnAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKCJ0YXNrLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oInRhc2sub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQogICAgaW5wdXQoKTsKICAgIHJldHVybiAwOwp9Cg==