import java.util.Scanner;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int round = in.nextInt();
        for (int i = 1; i <= round; i++) {
            int length = in.nextInt();
            in.nextLine(); // 吸收换行符
            String[] arr1 = in.nextLine().split(" ");
            String[] arr2 = in.nextLine().split(" ");
            boolean result = ifValid(arr1, arr2);
            System.out.println(result ? "Yes" : "No");
        }
        in.close();
    }

    public static boolean ifValid(String[] pushArr, String[] popArr) {
        Stack<String> stack = new Stack<>();
        int popIndex = 0; // 记录出栈序列的当前位置

        for (String num : pushArr) {
            stack.push(num); // 先将当前元素入栈

            // 入栈后,检查栈顶是否与出栈序列当前元素匹配,匹配则弹出
            while (!stack.isEmpty() && stack.peek().equals(popArr[popIndex])) {
                stack.pop();
                popIndex++; // 移动出栈指针
            }
        }

        // 如果栈为空,说明所有元素都按规则弹出,即匹配
        return stack.isEmpty();
    }
}