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

int main(){

	int t;
	cin >> t;

	while(t--){

		int n,m;
		cin >> n >> m;

		int a[n],b[n],c[m];

		for(int i=0;i<n;i++){
			cin >> a[i];
		}

		for(int i=0;i<n;i++){
			cin >> b[i];
		}

		for(int i=0;i<m;i++){
			cin >> c[i];
		}

		map < int,stack<int> > precisa,tem,final;

		for(int i=0;i<n;i++){
			if(a[i]!=b[i]) precisa[b[i]].push(i);
		}

		for(int i=0;i<n;i++){
			final[b[i]].push(i);
		}

		for(int i=0;i<m;i++){
			tem[c[i]].push(i);
		}

		bool ok = 1;

		for(map< int,stack<int> >::iterator it=precisa.begin();it!=precisa.end();it++){
			int key = (*it).first;
			int val = ((*it).second).size();
			if((int)tem[key].size() < val){
				ok = 0;
				break;
			}
		}

		if(!ok){
			cout << "NO\n";
			continue;
		}

		int ans[m];memset(ans,0,sizeof ans);
		int x = -1;

		int p = -1;

		for(int i=m-1;i>=0;i--){

			if((int)final[c[i]].size() == 0 && p==-1){
				break;
			}

			if((int)final[c[i]].size() == 0 && p!=-1){
				ans[i] = p;
				continue;
			}

			if((int)precisa[c[i]].size() == 0){
				ans[i] = final[c[i]].top() + 1;
				p = final[c[i]].top() + 1;
			}

			if((int)precisa[c[i]].size() > 0){
				x = i;
				break;
			}

		}

		if(x == -1 && ans[0] == 0){
			cout << "NO\n";
			continue;
		}

		for(int i=x;i>=0;i--){
			if((int)precisa[c[i]].size() > 0){
				ans[i] = precisa[c[i]].top() + 1;
				precisa[c[i]].pop();
			}else{
				ans[i] = ans[i+1];
			}
		}

		cout << "YES\n";
		for(int i=0;i<m;i++){
			cout << ans[i] << " ";
		}
		cout << endl;

	}

	return 0;
}