#include <bits/stdc++.h>
using namespace std;
const int N = (5010 << 2), M = 1e5 + 10;
const int INF = 1e9 + 10;
int n, st, ed, tot = 1;
queue<int> que;
int v[N], fir[N], vis[N], dist[N], minf[N], mod[8], exs[M], pre[N];
struct edge {
  int to;
  int dis, cost;
  int nxt;
} e[N * 20 + 2];
inline void add(int x, int y, int z, int w) {
  e[++tot] = (edge){y, z, w, fir[x]};
  fir[x] = tot;
  e[++tot] = (edge){x, 0, -w, fir[y]};
  fir[y] = tot;
}
inline bool SPFA() {
  for (int i = st; i <= ed; i++) dist[i] = -INF;
  minf[st] = INF, dist[st] = 0;
  vis[st] = 1, que.push(st);
  while (!que.empty()) {
    int p = que.front();
    que.pop();
    vis[p] = 0;
    for (int i = fir[p]; i; i = e[i].nxt) {
      int q = e[i].to;
      if (e[i].dis && dist[p] + e[i].cost > dist[q]) {
        dist[q] = dist[p] + e[i].cost;
        minf[q] = min(minf[p], e[i].dis), pre[q] = i;
        if (!vis[q]) que.push(q), vis[q] = 1;
      }
    }
  }
  return (dist[ed] != -INF);
}
inline int EK() {
  int maxflow = 0, ans = 0;
  while (SPFA()) {
    for (int p = ed, pos; p != st; p = e[pos ^ 1].to) {
      pos = pre[p];
      e[pos].dis -= minf[ed];
      e[pos ^ 1].dis += minf[ed];
    }
    maxflow += minf[ed];
    ans += minf[ed] * dist[ed];
  }
  return ans;
}
inline int id(int stp, int x) { return (stp - 1) * n + x; }
int main() {
  scanf("%d", &n);
  st = 0, ed = (n << 2) + 2;
  for (int i = 1; i <= n; i++) scanf("%d", &v[i]);
  int tmp = ed - 1;
  for (int i = n; i >= 1; i--) {
    add(tmp, id(3, i), 1, 0);
    add(id(3, i), id(4, i), 1, 1);
    add(id(1, i), id(3, i), 1, 0);
    add(id(2, i), id(3, i), 1, 0);
    add(id(4, i), ed, 1, 0);
    if (exs[v[i]]) add(id(1, i), id(1, exs[v[i]]), INF, 0);
    if (mod[v[i] % 7]) add(id(2, i), id(2, mod[v[i] % 7]), INF, 0);
    if (exs[v[i] - 1]) add(id(4, i), id(1, exs[v[i] - 1]), INF, 0);
    if (exs[v[i] + 1]) add(id(4, i), id(1, exs[v[i] + 1]), INF, 0);
    if (mod[v[i] % 7]) add(id(4, i), id(2, mod[v[i] % 7]), INF, 0);
    exs[v[i]] = i;
    mod[v[i] % 7] = i;
  }
  add(st, tmp, 4, 0);
  printf("%d\n", EK());
  return 0;
}
