#include using namespace std; #define SZ(a) (int((a).size())) #define FOR(i,n) for(int _n=(n),i=0;i<_n;++i) #define FORI(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define FORSZ(i,c) FOR(i,SZ(c)) #define SET(t,x) memset((t),(x),sizeof(t)) #define FOREACH(it,c) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();++it) #define PRINT(x) cout<<#x<<"="<= 0 ? (a) : (-(a))) #define PB push_back #define MP make_pair #define EPS 1e-11 #define EPS2 1e-9 #define D_EQ(a,b) ((a)>((b)-EPS) && (a)<((b)+EPS)) #define D_LT(a,b) ((a)<((b)-EPS)) #define D_LTEQ(a,b) ((a)<((b)+EPS)) #define D_GT(a,b) ((a)>((b)+EPS)) #define D_GTEQ(a,b) ((a)>((b)-EPS)) #define INF 100000000 typedef long long ll; typedef pair PII; typedef vector VI; typedef vector VS; typedef vector VVI; template string i2s(T x) {ostringstream o; o << x; return o.str(); } templatevector split(const string& s){vector v;istringstream is(s);T t;while(is>>t)v.PB(t);return v;} //VS splitStr(const string& s, char delim='\0', bool keepEmpty=false){if(delim=='\0')return split(s);VS v;istringstream is(s);string t;while(getline(is,t,delim))if(keepEmpty || t!="")v.PB(t);return v;} VS splitStr(const string& s,const string& d="",bool keepEmpty=false){if(d.empty())return split(s);VS v;string t;FOR(i,SZ(s))if(d.find(s[i])!=string::npos){if(keepEmpty||!t.empty()){v.PB(t);t="";}}else t+=s[i];if(!t.empty())v.PB(t);return v;} int main() { std::ios::sync_with_stdio(false); int A[110],N,x; SET(A,0); cin>>N; FOR(i,N) { cin>>x; ++A[x]; } int maxNum=0; FORI(i,1,100)if(A[i]+A[i+1]>maxNum)maxNum=A[i]+A[i+1]; cout<