// God & me // Fly ... #include using namespace std; typedef long long ll; typedef pair pii; const int maxn = 1e6 + 17, inf = 2e9 + 20; int t, n, x[maxn], y[maxn], q[maxn]; pii xs[maxn], ys[maxn]; bool mark[maxn]; bool check(int d){ int h = 0, t = 0; int lx = 0, rx = n - 2, ly = 0, ry = n - 2; q[t++] = 0; memset(mark, 0, sizeof mark); auto add = [&](int u){ q[t++] = u; mark[u] = 1; while(lx <= rx && mark[ xs[rx].second ]) rx--; while(lx <= rx && mark[ xs[lx].second ]) lx++; while(ly <= ry && mark[ ys[ry].second ]) ry--; while(ly <= ry && mark[ ys[ly].second ]) ly++; }; while(h < t){ int v = q[h++]; //cerr << v << '\n'; while(lx <= rx && xs[rx].first >= (ll) x[v] + d) add(xs[rx].second); while(ly <= ry && ys[ry].first >= (ll) y[v] + d) add(ys[ry].second); while(lx <= rx && xs[lx].first <= (ll) x[v] - d) add(xs[lx].second); while(ly <= ry && ys[ly].first <= (ll) y[v] - d) add(ys[ly].second); } return h == n; } void solve(){ scanf("%d", &n); for(int tx, ty, i = 0; i < n; i++){ //cin >> tx >> ty; scanf("%d%d", &tx, &ty); x[i] = tx + ty; y[i] = tx - ty; if(i > 0){ xs[i - 1] = {x[i], i}; ys[i - 1] = {y[i], i}; } } sort(xs, xs + n - 1); sort(ys, ys + n - 1); int lo = 0, hi = inf; while(hi - lo > 1){ int mid = ((ll) lo + hi) / 2; (check(mid) ? lo : hi) = mid; } //cout << lo << '\n'; printf("%d\n", lo); } int main(){ scanf("%d", &t); while(t--) solve(); return 0; }