#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
const int INF = 1e9 + 10;
int n;
int a[maxn];
int dp[5005][5005];
int maxmod[7], maxnum[maxn];
int main() {
  while (cin >> n) {
    int MaxA = 0;
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]), MaxA = max(MaxA, a[i]);
    for (int y = 0; y <= n; y++) {
      memset(maxmod, 0, sizeof(maxmod));
      for (int i = 1; i <= n; i++) maxnum[a[i]] = 0;
      maxnum[0] = maxnum[MaxA + 1] = 0;
      for (int x = 0; x <= n; x++) {
        if (x == y)
          dp[x][y] = 0;
        else if (x < y)
          dp[x][y] = dp[y][x];
        else {
          dp[x][y] = max(max(maxmod[a[x] % 7] + 1, dp[0][y] + 1),
                         max(maxnum[a[x] - 1] + 1, maxnum[a[x] + 1] + 1));
        }
        maxnum[a[x]] = max(maxnum[a[x]], dp[x][y]);
        maxmod[a[x] % 7] = max(maxmod[a[x] % 7], dp[x][y]);
      }
    }
    int res = 0;
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++) res = max(res, dp[i][j]);
    cout << res << endl;
  }
  return 0;
}
