#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")