#include <iostream> #include<bits/stdc++.h> using namespace std; int main() { int q; cin>>q; while(q--) { int n; cin>>n; vector<int>x1(n); vector<int>x2(n); stack<int>p; for(int i=0;i<n;i++)//入栈序列 { cin>>x1[i]; } for(int j=0;j<n;j++)//出栈序列 { cin>>x2[j]; } int push_index=0;//下一个要入栈的元素 bool is_vaild=true;//默认为合法序列 for(int k=0;k<n;k++) { while(p.empty()||p.top()!=x2[k]) { if(push_index>=n)//入栈元素均压入,但栈顶元素仍然无法匹配 { is_vaild=false; break; } p.push(x1[push_index++]); } if(!is_vaild)//非法序列,直接跳出循环 { break; } p.pop(); } if(!p.empty()) cout<<"No"<<"\n"; else cout<<"Yes"<<"\n"; } }