#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";
    }
}