/*
* Copyright (c) 2025 Emon Thakur
* All rights reserved.
*/
#include<bits/stdc++.h>
using namespace std;
using ll=long long;
struct SGT{
vector<ll> sg;
SGT(int n) {sg.resize(n*4+10); }
void update(int node,int start,int end,int ind,ll val)
{
if(start==end)
{
sg[node] = max(sg[node] , val);
return;
}
int mid = (start + end)/2;
if(ind <= mid) update(node*2,start,mid,ind,val);
else update(node*2+1,mid+1,end,ind,val);
sg[node] = max(sg[node*2] , sg[node*2]+1);
}
ll query(int node,int start,int end,int l,int r)
{
if(l>end || r<start) return 0;
if(l<=start && r>=end) return sg[node];
int mid = (start+end)/2;
return max(query(node*2,start,mid,l,r) , query(node*2+1,mid+1,end,l,r));
}
};
ll calc(int ind,int n,vector<int>&a,vector<int>&b)
{
ll ans = 0;
SGT sgt(n);
for(int i=ind;i<n;i++)
{
ll pmax =(a[i]==1)? 0 : sgt.query(1,1,n,0,a[i]-1);
ans = max(ans , pmax+b[i]);
sgt.update(1,1,n,a[i],ans);
}
return ans;
}
void main2(int tc)
{
// string outp = "output"+to_string(tc)+".txt";
// string inp = "input"+to_string(tc)+".txt";
// ofstream file(outp);
// freopen(inp.c_str(),"r",stdin);
ios::sync_with_stdio(false); cin.tie(nullptr);
int t; cin >> t; while(t--)
{
int n; cin >> n;
vector<int> a(n),b(n);
for(int i=0;i<n;i++) cin >> a[i];
for(int i=0;i<n;i++) cin >> b[i];
ll mxans = calc(0,n,a,b);
int lo=0,hi=n-1,mid,ind=0;
while(lo<=hi)
{
mid = (lo+hi)/2;
if(calc(mid,n,a,b) == mxans)
{
ind = mid;
lo = mid+1;
}else hi = mid-1;
}
cout<<n-ind<<'\n';
//file<<n-ind<<'\n';
}
}
int main()
{
main2(0);
//for(int i=0;i<100;i++) main2(i);
}