#include <bits/stdc++.h>
using namespace std;
const long long P = 1000000007;
const long long INF = 1LL << 60;
int gcd(int a, int b) { return b != 0 ? gcd(b, a % b) : a; }
int lcm(int a, int b) { return a / gcd(a, b) * b; }
vector<char> Alphabet = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
                         'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
                         'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
vector<char> alphabet = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                         'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
                         's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  cout << fixed << setprecision(10);
  int N, K;
  cin >> N >> K;
  vector<int> A(N), vec(N);
  for (int i = (0); i < (N); ++i) cin >> A[i];
  vec[N - 1] = 1;
  int ans = 1;
  for (int i = N - 2; i > -1; i--) {
    for (int j = (0); j < (N); ++j) {
      if (i + j + 1 >= N) {
        vec[i] = 1;
        break;
      }
      if (abs(A[i + j + 1] - A[i]) <= 3) {
        vec[i] = vec[i + j + 1] + 1;
        break;
      }
    }
  }
  cout << vec[0] << endl;
  return 0;
}
