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