#include<iostream>
#include<algorithm>
#include<cmath>
#include<climits>
using namespace std;
bool sortbysec(const pair<long long int,long long int> &a,
const pair<long long int,long long int> &b)
{
return (a.second < b.second);
}
int main()
{
int t;
cin >> t;
while(t--)
{
int n;
cin >> n;
pair <long long int,long long int> points[n];
for(int i=0 ; i<n ; i++)
{
long long int x,y;
cin >> x >> y;
points[i] = make_pair(x-y,x+y);
}
sort(points,points+n);
long long int curr_min = INT_MAX;
for(int i=1 ; i<n ; i++)
{
curr_min = min(curr_min,points[i].first - points[i-1].first);
}
sort(points,points+n,sortbysec);
for(int i=1 ; i<n ; i++)
{
curr_min = min(curr_min,points[i].second - points[i-1].second);
}
cout.precision(30);
cout<<double(curr_min)/2.0 << "\n";
}
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGNsaW1pdHM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBzb3J0YnlzZWMoY29uc3QgcGFpcjxsb25nIGxvbmcgaW50LGxvbmcgbG9uZyBpbnQ+ICZhLCAKICAgICAgICAgICAgICBjb25zdCBwYWlyPGxvbmcgbG9uZyBpbnQsbG9uZyBsb25nIGludD4gJmIpIAp7IAogICAgcmV0dXJuIChhLnNlY29uZCA8IGIuc2Vjb25kKTsgCn0gCgppbnQgbWFpbigpCnsKCWludCB0OwoJY2luID4+IHQ7Cgl3aGlsZSh0LS0pCgl7CgkJaW50IG47CgkJY2luID4+IG47CgkJcGFpciA8bG9uZyBsb25nIGludCxsb25nIGxvbmcgaW50PiBwb2ludHNbbl07CgkJZm9yKGludCBpPTAgOyBpPG4gOyBpKyspCgkJewoJCQlsb25nIGxvbmcgaW50IHgseTsKCQkJY2luID4+IHggPj4geTsKCQkJcG9pbnRzW2ldID0gbWFrZV9wYWlyKHgteSx4K3kpOwoJCX0KCQlzb3J0KHBvaW50cyxwb2ludHMrbik7CgkJbG9uZyBsb25nIGludCBjdXJyX21pbiA9IElOVF9NQVg7CgkJZm9yKGludCBpPTEgOyBpPG4gOyBpKyspCgkJewoJCQljdXJyX21pbiA9IG1pbihjdXJyX21pbixwb2ludHNbaV0uZmlyc3QgLSBwb2ludHNbaS0xXS5maXJzdCk7CgkJfQoJCXNvcnQocG9pbnRzLHBvaW50cytuLHNvcnRieXNlYyk7CgkJZm9yKGludCBpPTEgOyBpPG4gOyBpKyspCgkJewoJCQljdXJyX21pbiA9IG1pbihjdXJyX21pbixwb2ludHNbaV0uc2Vjb25kIC0gcG9pbnRzW2ktMV0uc2Vjb25kKTsKCQl9CgkJY291dC5wcmVjaXNpb24oMzApOwoJCWNvdXQ8PGRvdWJsZShjdXJyX21pbikvMi4wIDw8ICJcbiI7Cgl9Cn0K