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