#include using namespace std; /*const int MAXN = 5010; int a[MAXN], b[MAXN], N; bool check (int K) { cerr << "BS " << K << endl; multiset A, B; for (int i = 1; i <= N; i++) { A.insert(a[i]); B.insert(b[i]); } while (!A.empty()) { int minA = *A.begin(); int minB = *B.begin(); if (minA < minB) { auto x = B.lower_bound(minA+K); if (x == B.end()) return false; cerr << 'A' << minA << ' ' << *x << endl; A.erase(A.begin()); B.erase(x); } else { auto x = A.lower_bound(minB+K); if (x == A.end()) return false; cerr << 'B' << minB << ' ' << *x << endl; A.erase(x); B.erase(B.begin()); } } return true; } int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin >> t; while(t--) { cin >> N; for (int i = 1; i <= N; i++) { cin >> a[i]; } for (int i = 1; i <= N; i++) { cin >> b[i]; } sort(a+1, a+1+N); sort(b+1, b+1+N); int l = 0, r = 1000000000, rez = 0; while (l <= r) { int mid = (l+r)/2; if (check(mid)) { l = mid+1; rez = mid; } else { r = mid-1; } } cout << rez << '\n'; } return 0; }*/ int n; int a[5003]; int b[5003]; int levi[5003]; int desni[5003]; bool moze(int s) { int p=0,q=0; for (;p=s) q++; levi[p]=q; } for (int i=0;i=najde) continue; int nemoze=najde-najle-1; if (j-i+1 > n-nemoze) return false; } return true; } int main() { ios::sync_with_stdio(false); cin.tie(0); int t; cin>>t; while (t--) { cin>>n; for (int i=0;i>a[i]; for (int i=0;i>b[i]; sort(a,a+n); sort(b,b+n); int l=0,r=1'000'000'007; while (r-l>1) { int mid=(l+r)/2; if (moze(mid)) l=mid; else r=mid; } cout<