#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main(){
int q,n,m,k,d;
cin>>q;
for(int j=0;j<q;j++){ //注意两层循环用不同变量!
d=0;
cin>>n;
vector<int> a(n);
vector<int> b(n+1);
stack<int> s; //每次大循环都要重新初始化栈s,因为后续在pop出栈时若输出'No'后直接break了
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
k=b[0];
for(int i=0;i<n;i++){
s.push(a[i]);
while(!s.empty()&&s.top()==k){ //注意是循环while而非if
s.pop();
k=b[++d]; //注意是++d而非d++! d++是先赋值再递增,++d是先递增再赋值
}
}
while(!s.empty()){
if(s.top()!=k){
cout<<"No"<<endl;
break;
}
s.pop();
k=b[++d];
}
if(d==n) cout<<"Yes"<<endl;
}
return 0;
}