#include<bits/stdc++.h>
using namespace std;

#ifndef ONLINE_JUDGE
    #include "template.cpp"
#else
    #define debug(...)
    #define debugArr(a, n)
#endif

#define io ios_base::sync_with_stdio(false); cin.tie(NULL); 
#define endl '\n'

void Wah() {
    io;
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt","w",stdout);
    #endif
}

// typedef vector<long long> vll;
// typedef long double ld;
// #define int long long
// typedef pair<int,int> pii;


const int N = 1e6+10;
int a[N], b[N];
vector<int> comp;
int canJump[N];
int lastSeen[N];
int t[4 * 2 * N]{};

void clearAll(){ /// run for 2n

}

void compress( int n ){
    comp.assign(2*n,0);
    for ( int i = 1; i <= n; i++ ) comp[i-1] = a[i];
    for ( int i = 1; i <= n; i++ ) comp[i-1+n] = b[i];

    sort(comp.begin(), comp.end());
    comp.erase(unique(comp.begin(), comp.end()), comp.end());

    for ( int i = 1; i <= n; i++ ) {
        a[i] = lower_bound(comp.begin(), comp.end(), a[i]) - comp.begin() + 1;
        b[i] = lower_bound(comp.begin(), comp.end(), b[i]) - comp.begin() + 1;
    }
}

void calculateJump( int n ){
    for ( int i = 1; i <= n; i++ ){
        if ( lastSeen[a[i]] ) {
            canJump[i] = i - lastSeen[a[i]] + 1;
            lastSeen[b[i]] = i;
        }
    }
}

void build(int n, int b, int e) {
    if (b == e) {
        t[n] = INT_MAX; ///////////
        return;
    }
    int mid = (b + e) >> 1, l = n << 1, r = l | 1;
    build(l, b, mid);
    build(r, mid + 1, e);
    t[n] = max(t[l], t[r]); ///////////
}

void upd(int n, int b, int e, int i, int x) {
    if (b > i || e < i) return;
    if (b == e && b == i) {
        t[n] = x; ///////////
        return;
    }
    int mid = (b + e) >> 1, l = n << 1, r = l | 1;
    upd(l, b, mid, i, x);
    upd(r, mid + 1, e, i, x);
    t[n] = max(t[l], t[r]); ///////////
}

int query(int n, int b, int e, int i, int j) {
    if (b > j || e < i) return INT_MIN; /////////////
    if (b >= i && e <= j) return t[n];
    int mid = (b + e) >> 1, l = n << 1, r = l | 1;
    int L = query(l, b, mid, i, j);
    int R = query(r, mid + 1, e, i, j);
    return max(L, R); ///////////////
}

void senritsu() {   

    int n; cin >> n;
    for ( int i = 1; i <= n; i++ ) cin >> a[i];
    for ( int i = 1; i <= n; i++ ) cin >> b[i];
    
    build(1,1,2*n);
    compress(n);
    calculateJump(n);
    


}

signed main() {
    Wah();
    int tt = 1;
    cin >> tt;
    while ( tt-- > 0 ) {
        senritsu();
    }
    return 0;
}