#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); i++) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; bool possible(vi& a, vi& b, ll charm) { ll rpossible = 0; rep(r, 0, sz(a)) { } // all pairs have at least charm diff int j = 0; vi skipped; rep(i, 0, sz(a)) { while (j < sz(b) && abs(b[j]-a[i]) < charm) { // add b[j] to skipped skipped.push_back(b[j]); j++; } if (j < sz(b)) { // take j++; } else { rep(k, i, sz(a)) { if (sz(skipped) > k-i && abs(a[k]-skipped[k-i]) < charm) { return false; } } return true; } } return true; } void solve() { int N; cin >> N; vi a(N); vi b(N); rep(i, 0, N) cin >> a[i]; rep(i, 0, N) cin >> b[i]; sort(all(a)); sort(all(b)); ll lo=0; // possible ll hi=2e9; // impossible while (lo + 1 < hi) { ll mid = (lo+hi)/2; bool p = possible(a, b, mid); cerr << "mid=" << mid << " possible=" << p << endl; if (p) { lo = mid; } else { hi = mid; } } cout << lo << endl; } void solve2() { int N; cin >> N; vi a(N); vi b(N); rep(i, 0, N) cin >> a[i]; rep(i, 0, N) cin >> b[i]; sort(all(a)); sort(all(b)); ll ans = 0; rep(r, 0, N) { ll thismincharm = 1e18; ll rc = N-r; rep(i, 0, r) { thismincharm = min(thismincharm, abs(b[rc+i]-a[i])); } rep(i, 0, rc) { thismincharm = min(thismincharm, abs(b[i]-a[r+i])); } ans = max(ans, thismincharm); } cout << ans << endl; } int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int T; cin >> T; rep(i, 0, T) solve2(); }