#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int n;
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n;
  v.resize(n);
  map<int, int> mp;
  for (int i = 0; i < n; i++) {
    cin >> v[i];
    mp[v[i]]++;
  }
  sort(v.begin(), v.end());
  auto it = unique(v.begin(), v.end());
  v.resize(distance(v.begin(), it));
  int sz = (int)v.size();
  int ans = 2ll;
  ans = max(ans, mp[0]);
  for (int i = 0; i < sz; i++) {
    for (int j = 0; j < sz; j++) {
      if ((v[i] == 0 and v[j] == 0) or (i == j and mp[v[i]] == 1)) continue;
      int a = v[i], b = v[j];
      int cur = 2;
      map<int, int> ump;
      ump[a]++;
      ump[b]++;
      while (true) {
        if (mp.count(a + b) and ump[a + b] < mp[a + b]) {
          ump[a + b]++;
          a = a + b;
          swap(a, b);
          cur++;
        } else
          break;
      }
      ans = max(ans, cur);
    }
  }
  cout << ans << endl;
}
