#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Mod=998244353;
bool is_square(ll num) {
ll root = sqrt(num);
return root * root == num;
}
void solve() {
int n;
cin >> n;
vector<int> a(n);
for(int i=0;i<n;i++) cin >> a[i];
ll ans =1;
for(int i=0;i<n;i++){
ll curr=0;
for(int j=i+1;j<n;j++){
ll d=a[j]-a[i];
vector<pair<ll,ll>> divisors;
for(int k=1;k*k<=d;k++){
if(d%k==0){
ll p=k , q=d/k;
divisors.push_back({p,q});
if(p!=q)
divisors.push_back({q,p});
}
}
for(int q=0;q<divisors.size();++q){
if((divisors[q].first+divisors[q].second)%2!=0 || (divisors[q].first-divisors[q].second)%2!=0) continue;
ll t =(divisors[q].first+divisors[q].second)/2;
ll s =(divisors[q].first-divisors[q].second)/2;
if(t*t < a[j]) continue;
ll x=t*t-a[j];
ll cnt=0;
for(int k=0;k<n;k++)
if(is_square((ll)a[k]+x)) cnt++;
curr=max(curr,cnt);
}
}
ans=max(ans,curr);
}
cout << ans << '\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTW9kPTk5ODI0NDM1MzsKCiAgYm9vbCBpc19zcXVhcmUobGwgbnVtKSB7CiAgICBsbCByb290ID0gc3FydChudW0pOwogICAgcmV0dXJuIHJvb3QgKiByb290ID09IG51bTsKfQoKdm9pZCBzb2x2ZSgpIHsKCiAgIGludCBuOwogICBjaW4gPj4gbjsKICAgdmVjdG9yPGludD4gYShuKTsKICAgZm9yKGludCBpPTA7aTxuO2krKykgY2luID4+IGFbaV07CiAgIAogICBsbCBhbnMgPTE7CiAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgbGwgY3Vycj0wOwogICAgZm9yKGludCBqPWkrMTtqPG47aisrKXsKCiAgICAgICAgbGwgZD1hW2pdLWFbaV07CiAgICAgICAgdmVjdG9yPHBhaXI8bGwsbGw+PiBkaXZpc29yczsKCiAgICAgICAgZm9yKGludCBrPTE7ayprPD1kO2srKyl7CiAgICAgICAgICBpZihkJWs9PTApewogICAgICAgICAgICBsbCBwPWsgLCBxPWQvazsKICAgICAgICAgICAgZGl2aXNvcnMucHVzaF9iYWNrKHtwLHF9KTsKICAgICAgICAgICAgaWYocCE9cSkKICAgICAgICAgICAgIGRpdmlzb3JzLnB1c2hfYmFjayh7cSxwfSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgIGZvcihpbnQgcT0wO3E8ZGl2aXNvcnMuc2l6ZSgpOysrcSl7CiAgICAgICAgICBpZigoZGl2aXNvcnNbcV0uZmlyc3QrZGl2aXNvcnNbcV0uc2Vjb25kKSUyIT0wIHx8IChkaXZpc29yc1txXS5maXJzdC1kaXZpc29yc1txXS5zZWNvbmQpJTIhPTApIGNvbnRpbnVlOwoKICAgICAgICAgIGxsIHQgPShkaXZpc29yc1txXS5maXJzdCtkaXZpc29yc1txXS5zZWNvbmQpLzI7CiAgICAgICAgICBsbCBzID0oZGl2aXNvcnNbcV0uZmlyc3QtZGl2aXNvcnNbcV0uc2Vjb25kKS8yOwogICAgICAgICAgaWYodCp0IDwgYVtqXSkgY29udGludWU7CiAgICAgICAgICBsbCB4PXQqdC1hW2pdOwogICAgICAgICAgbGwgY250PTA7CiAgICAgICAgICAKICAgICAgICAgIGZvcihpbnQgaz0wO2s8bjtrKyspCiAgICAgICAgICAgIGlmKGlzX3NxdWFyZSgobGwpYVtrXSt4KSkgY250Kys7CiAgICAgICAgICAKICAgICAgICAgIGN1cnI9bWF4KGN1cnIsY250KTsKICAgICAgIH0KICAgIH0KICAgIGFucz1tYXgoYW5zLGN1cnIpOwogICB9CiAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cgp9CgppbnQgbWFpbigpeyAKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgkKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgCgogICAgcmV0dXJuIDA7Cn0K