#include <bits/stdc++.h>
using namespace std;
struct fp {
  int data, pos;
  friend bool operator<(fp a, fp b) {
    if (a.data == b.data) return a.pos < b.pos;
    return a.data < b.data;
  }
} px[100001];
int main() {
  int n, i, i2, j, j2, k1, k2, ans = 0;
  scanf("%d", &n);
  for (i = 0; i < n; ++i) {
    scanf("%d", &px[i].data);
    px[i].pos = i;
  }
  sort(px, px + n);
  for (i = 0; i < n; i = i2) {
    for (i2 = i; i2 < n && px[i2].data == px[i].data; ++i2)
      ;
    if (i2 - i > ans) ans = i2 - i;
    for (j = i2; j < n; j = j2) {
      int now = 2;
      for (j2 = j; j2 < n && px[j2].data == px[j].data; ++j2)
        ;
      for (k1 = i, k2 = j;;)
        if (px[k1].pos < px[k2].pos) {
          for (; k1 < i2 && px[k1].pos < px[k2].pos; ++k1)
            ;
          if (k1 >= i2) break;
          now++;
        } else {
          for (; k2 < j2 && px[k2].pos < px[k1].pos; ++k2)
            ;
          if (k2 >= j2) break;
          now++;
        }
      ans = max(ans, now);
    }
  }
  printf("%d\n", ans);
  return 0;
}
