#include <iostream>
#include <algorithm>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <string>
#include <string.h>
#include <stack>
#define Endl endl
#define mp make_pair
#define rep(N) for(int i=0;i<N;i++)
#define repj(N) for(int j=0;j<N;j++)
#define ll long long 
#define pii pair<int,int>
#define pll pair<ll,ll>
#define For(I,N) for(int I=0;I<N;I++)
#define cinone(N) int N;cin>>N;
#define scanfone(N) int N;cin>>N;
#define cinng(N,M) int N[M];for(int yiuytvnm=0;yiuytvnm<M;yiuytvnm++) cin>>N[yiuytvnm];
#define scanfng(N,M) int N[M];for(int qrwuoiq=0;qrwuoiq<M;qrwuoiq++) scanf("%d",&N[qrwuoiq]);
typedef unsigned long long ull;
using namespace std;
int s[100005];

long long kuaism(long long n,long long m);
long long jiec(long long n);
long long kuaism(long long n,long long m,long long mod);
long long jiec(long long n,long long mod);
unsigned long long C(int a,int k,long long mod);
unsigned long long C(int a,int k);
int shaiprime(int a[],int n);
int shaiprime(long long a[],int n);
int print_0x(int x);
int maxnum(int a[],int l,int r);
int maxnum(int a[],int n);
int maxid(int a[],int l,int r);
int maxid(int a[],int n);
long long kuaism(long long n,long long m)
{
	if(n==1)
	{
		return m;
	}
	else if(!n)
	{
		return 1;
	}
	else
	{
		if(n%2)
		{
			long long a=kuaism(n/2,m);
			return m*a*a;
		}
		else
		{
			long long a=kuaism(n/2,m);
			return a*a;
		}
	}
}

long long jiec(long long n)
{
	if(n==1)
	{
		return 1;
	}
	else 
	{
		return jiec(n-1)*n;
	}
}

long long kuaism(long long n,long long m,long long mod)
{
	if(n==1)
	{
		return m%mod;
	}
	else if(!n)
	{
		return 1;
	}
	else
	{
		if(n%2)
		{
			long long a=kuaism(n/2,m,mod)%mod;
			return m*a*a%mod;
		}
		else
		{
			long long a=kuaism(n/2,m,mod)%mod;
			return a*a%mod;
		}
	}
}

long long jiec(long long n,long long mod)
{
	if(n==1)
	{
		return 1;
	}
	else 
	{
		return jiec(n-1,mod)%mod*n%mod;
	}
}

unsigned long long C(int a,int k,long long mod)
{
	if (a==k) return 1;
	if (k==0) return 1;
	if (a==0) return 0;
	int b=k;
	b=a<b*2?a-b:b;
	int d[b]={0};
	int i,j;
	long long s=1;
	for(i=a;i>a-b;i--)
	{
		s*=i;
		for(j=1;j<=b;j++)
		{
			if(!d[j-1])
			{
				if(s%j==0)
				{
					s/=j;
					d[j-1]=1;
				}
			}
		}
		s%=mod;
	}
	return s;
}

unsigned long long C(int a,int k)
{
	if (a==k) return 1;
	if (k==0) return 1;
	if (a==0) return 0;
	int b=k;
	b=a<b*2?a-b:b;
	int d[b]={0};
	int i,j;
	long long s=1;
	for(i=a;i>a-b;i--)
	{
		s*=i;
		for(j=1;j<=b;j++)
		{
			if(!d[j-1])
			{
				if(s%j==0)
				{
					s/=j;
					d[j-1]=1;
				}
			}
		}
	}
	return s;
}

int print_0x(int x)
{
	while(x)
	{
		printf("%d",x&1);
		x>>=1;
	}
	printf("\n");
}

int shaiprime(int a[],int n)
{
	bool b[n];
	for(int i=0;i<n;i++)
	{
		b[i]=true;
	}
	for(int i=2;i<n;i++)
	{
		if(!b[i]) continue;
		for(int j=i+i;j<n;j+=i)
		{
			b[j]=false;
		}
	}
	int k=0;
	for(int i=2;i<n;i++)
	{
		if(b[i]) a[k++]=i;
	}
	return k;
}

int maxnum(int a[],int l,int r)
{
	int res=0;
	for(int i=l;i<r;i++)
	{
		if(a[i]>res) res=a[i];
	}
	return res;
}

int maxnum(int a[],int n)
{
	int res=0;
	for(int i=0;i<n;i++)
	{
		if(a[i]>res) res=a[i];
	}
	return res;
}

int maxid(int a[],int n)
{
	int k=0;
	for(int i=1;i<n;i++)
	{
		if(a[i]>a[k]) k=i;
	}
	return k;
}

int maxid(int a[],int l,int r)
{
	if(l>=r) return -1;
	int k=l++;
	for(int i=l;i<r;i++)
	{
		if(a[i]>a[k]) k=i;
	}
	return k;
}

int main()
{
//	freopen("input.txt","r",stdin);
	int n;
	cin>>n;
	int x;
	rep(n)
	{
		scanf("%d",&x);
		for(int j=0;j<=2;j++)
		{
			s[x+j]++;
		}
	}
	cout<<maxnum(s,100005);
	return 0;
}

Measured memory_bytes: 640