#include<bits/stdc++.h>
using namespace std;
int main()
{
//freopen("ans.out","w",stdout);
int q,n,a[100010],b[100010],pushed[100010],poped[100010],temp,p,qmax=0;
bool t=0;
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>n;
for(int j=1;j<=n;j++)
{
cin>>pushed[j];//读取入栈顺序,a记录元素pushed[j]在顺序中的位置
a[pushed[j]]=j;
}
for(int j=1;j<=n;j++)
{
cin>>poped[j];//读取出栈顺序,b记录元素poped[j]在顺序中的位置
b[poped[j]]=j;
}
for(int j=1;j<n;j++)//对于第j个出栈的元素,在它之前入栈并在它之后出栈的元素一定按入栈顺序逆向出栈
{
p=a[poped[j]],t=1;
for(int k=p-1;k>=1;k--)//检索在该元素之前出栈的元素
{
if(b[a[k]]>j)//判断是否在其之后出栈
if(b[a[k]]>qmax) qmax=b[a[k]];//判断在该元素之后出栈,是否是逆序出栈
else {t=0;break;}
}
qmax=0;
if(!t) break;
}
if(t) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}