#include #include #include #include #include #include #include using namespace std; int countItems(multiset a, int x) { int count = 0; for(multiset::iterator it = a.find(x); it != a.end() && *it == x; ++it) count++; return count; } int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int n, temp; cin >> n; multiset a; for(int i = 0; i < n; i++) { cin >> temp; a.insert(temp); } map, int> sols; pair bestPair; int maxCount = 0; int e; map, int>::iterator itSol; pair solPair; for(int i : a) { e = 1; solPair = pair(i, i + e); itSol = sols.find(solPair); if(itSol != sols.end()) { if(itSol->second > maxCount) { maxCount = itSol->second; bestPair = solPair; } } else { int count = countItems(a, i) + countItems(a, i + e); sols.emplace(solPair, count); if(count > maxCount) { maxCount = count; bestPair = solPair; } } e = -1; solPair = pair(i, i + e); itSol = sols.find(solPair); if(itSol != sols.end()) { if(itSol->second > maxCount) { maxCount = itSol->second; bestPair = solPair; } } else { int count = countItems(a, i) + countItems(a, i + e); sols.emplace(solPair, count); if(count > maxCount) { maxCount = count; bestPair = solPair; } } } cout << maxCount << endl; return 0; }