#include <iostream>
#include <stack>
#include <vector>
//不推荐使用万能头,用到哪个就调用其头文件
using namespace std;
int main() {
int q{};//q组数据
cin>>q;
while(q--)
{
stack<int> c;//定义一个栈,用于验证数据的出入
int n{};
cin>>n;
vector<int> a(n),b(n);//利用vector序列记录push组和pop组
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n;i++)
{
cin>>b[i];
}//以上两组都是数据的输入
int j{};//j是pop组的指针,用于验证是否出栈
for(int i=0;i<n;i++)
{
c.push(a[i]);//首先将push组的数据一个个入栈
while(!c.empty()&&c.top()==b[j]){//如果栈不为空,且栈顶数据等于
c.pop(); //pop组的数据,就出栈,并且将j指针后移
j++;
//这里使用while循环是为了模拟“随时出栈入栈”的操作,可以作为技巧
}
}
if(c.empty())
cout<<"Yes"<<endl;//如果最后栈为空,说明数据都匹配,验证通过输出Yes
else
cout<<"No"<<endl;//反之输出No
}
}
// 64 位输出请用 printf("%lld")