import java.util.Scanner;
import java.util.Stack;
/**
* @author supermejane
* @date 2025/10/1
* @description
*/
public class Main {
private static Stack<Integer> stack = new Stack<>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int pairNum = in.nextInt();
for (int i = 0; i < pairNum; i++) {
int singleLength = in.nextInt();
int[] inSeq = new int[singleLength], outSeq = new int[singleLength];
for (int j = 0; j < singleLength; j++) {
inSeq[j] = in.nextInt();
}
for (int j = 0; j < singleLength; j++) {
outSeq[j] = in.nextInt();
}
System.out.println(validate(inSeq, outSeq) ? "Yes" : "No");
stack.clear(); //注意要clear
}
}
}
//重点在于把情况分清楚就行
public static boolean validate(int[] in, int[] out) {
int i = 0;
int j = 0;
while (i < out.length) {
int currentOut = out[i];
if (!stack.isEmpty()) {
if (!(stack.peek() == currentOut)) {
if (stack.contains(currentOut)) return false;
else {
while (j < in.length && in[j] != currentOut) {
stack.push(in[j++]);
}
if(j == in.length) return false;
if (in[j] == currentOut) {
j++;
i++;
}
}
} else {
stack.pop();
i++;
}
} else {
while (j < in.length && in[j] != currentOut) {
stack.push(in[j++]);
}
if(j == in.length) return false;
if (in[j] == currentOut) {
j++;
i++;
}
}
}
return true;
}
}