void solve(){
auto start = chrono::high_resolution_clock::now();
bitset<32000> isPrime;
isPrime.set();
isPrime[0] = isPrime[1] = 0;
rep(i, 2, 32000) if(isPrime[i]){
for(ll j = (ll)i*i; j < 32000; j += i) isPrime[j] = 0;
}
vector<int> primes;
rep(i, 2, 32000) if(isPrime[i]) primes.push_back(i);
int N; cin >> N;
vector<ll> A(N);
rep(i, 0, N) cin >> A[i];
int ans = (N+1)/2;
while(1){
auto end = chrono::high_resolution_clock::now();
auto duration = chrono::duration_cast<chrono::milliseconds>(end - start);
if(duration.count() > 900) break;
int a = rand() % N, b = rand() % N;
int diff = abs(A[a] - A[b]);
vector<int> divs;
for(int p: primes){
if(p*p > diff) break;
if(diff % p == 0){
divs.push_back(p);
while(diff % p == 0) diff /= p;
}
}
if(diff > 1) divs.push_back(diff);
for(int d: divs){
map<int, int> mp;
for(auto x: A) mp[x%d]++;
for(auto [_, c]: mp) ans = max(ans, c);
}
}
cout << ans;
}