#include <bits/stdc++.h>
using namespace std;

#define mp(a,b) make_pair(a,b)
#define st first
#define nd second
const int MAXN=2100;
typedef pair<int,int> PII;
int n,k,x,y;
int a[MAXN],b[MAXN];
vector<int> c[MAXN],d[MAXN];
int m[MAXN][MAXN];
queue<PII> q;
PII t;

int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d%d",&k,&n);
		for (int i=0;i<n;i++) scanf("%d",a+i);
		for (int i=0;i<n;i++) scanf("%d",b+i);
		while(!q.empty()) q.pop();
		for (int i=0;i<n;i++)
			for (int j=0;j<n;j++)
			m[i][j]=0;
		for (int i=0;i<n;i++) { c[i].clear(); d[i].clear(); }
		for (int i=0;i<n;i++) { c[a[i]].push_back(i); d[b[i]].push_back(i); }
		for (int i=0;i<n;i++){
			m[i][i]=1;
			q.push(mp(i,i));
		}
		while(!q.empty())
		{
			t=q.front();
			q.pop();
			x=t.st;
			y=t.nd;
			for (int i=c[x].size()-1;i>=0;i--)
			for (int j=c[y].size()-1;j>=0;j--)
			if (!m[c[x][i]][c[y][j]]){
				m[c[x][i]][c[y][j]]=1;
				q.push(mp(c[x][i],c[y][j]));
			}
			for (int i=d[x].size()-1;i>=0;i--)
			for (int j=d[y].size()-1;j>=0;j--)
			if (!m[d[x][i]][d[y][j]]){
				m[d[x][i]][d[y][j]]=1;
				q.push(mp(d[x][i],d[y][j]));
			}
		}
		int flag=1;
		for (int i=0;i<n;i++)
		for (int j=0;j<n;j++)
		if (!m[i][j]){
			flag=0;
			break;
		}
		if (!flag) printf("%d NO\n",k);
		else printf("%d YES\n",k);
	}
}
