n = int(input())
for _ in range(n):
    l = int(input())
    stack1 = input().split() # 入栈序列
    stack2 = input().split() # 出栈序列

    index = 0 
    index_s1 = 0
    
    stack = [] 
    
    # 当 index == l 时,说明所有期望的出栈元素都已成功弹出
    
    while index < l: # 当 index 达到 l 时,说明 stack2 中的所有元素都已成功匹配并弹出
        
        # 1. 尝试出栈:如果栈不为空,且栈顶元素与 stack2 中当前期望的元素匹配
        if stack and stack[-1] == stack2[index]:
            stack.pop()
            index += 1 #
        # 2. 尝试入栈:如果栈顶不匹配(或栈为空),且入栈序列 stack1 还有元素可以入栈
        #    这里我们使用 index_s1 来跟踪 stack1 中已经入了多少个元素
        elif index_s1 < l: 
            stack.append(stack1[index_s1]) # 从 stack1 中入栈
            index_s1 += 1 
        # 3. 无法出栈也无法入栈:
        #    - stack 不为空,但 stack[-1] != stack2[index] 且 stack1 已经用完 (index_s1 == l)
     
        else:
            break # 无法继续,跳出循环,后续会判断 stack 是否为空

    # 最终判断:如果栈为空,说明所有元素都成功入栈并按顺序出栈了
    if not stack:
        print("Yes")
    else:
        print("No")