#include #define pii pair using namespace std; int NL, NR; vector vs[5001]; int lmatch[5001]; int rmatch[5001]; int visited[5001], iter; int a[5001], b[5001]; bool dfs(int u) { if(visited[u] < iter){ visited[u] = iter; for(int v : vs[u]){ if(rmatch[v] == -1 || dfs(rmatch[v])){ lmatch[u] = v; rmatch[v] = u; return true; } } } return false; } int maxmatching(){ fill(lmatch, lmatch + NL, -1); fill(rmatch, rmatch + NR, -1); int m = 0, dm = 1; while(dm){ dm = 0; iter++; for(int u = 0; u < NL; u++) if(lmatch[u] == -1) dm += dfs(u); m += dm; } return m; } bool verif(int mini) { for(int i = 0; i < NL; i++) vs[i].clear(); for(int i = 0; i < NL; i++) for(int j = 0; j < NR; j++) if(abs(a[i] - b[j]) >= mini) vs[i].push_back(j); int x = maxmatching(); //cout << x << " "; return x == NL; } void solve() { int n; cin >> n; NL = NR = n; for(int i = 0; i < n; i++) cin >> a[i]; for(int i = 0; i < n; i++) cin >> b[i]; int r = -1, pas = 1 << 29; while(pas) { if(verif(r + pas)) r += pas; pas /= 2; } cout << r << '\n'; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); #ifdef LOCAL freopen("test.in", "r", stdin); freopen("test.out", "w", stdout); #else #endif int T = 1; cin >> T; while(T--) { solve(); } return 0; }