#include<bits/stdc++.h>
using namespace std;
#define fi              first
#define se              second
#define ll              long long
#define pb              push_back
#define mp              make_pair
#define pi             pair<int,int>
#define pll           pair<long long,long long>
#define vi              vector<int>
#define mi            map<int,int>
#define pqb             priority_queue<int>
#define pqs             priority_queue<int,vi,greater<int> >
#define mod             1000000007
#define inf             1e18
#define w(t)            int t; cin>>t; while(t--)
#define f(i,x)             for(int i=0;i<x;i++)
#define rep(i,a,b)      for(int i=a;i<=b;i++)
void solve()
{
int n,m;
cin>>n>>m;
int a[n+1];
int b[n+1];
int c[m+1];
vector<int> v[n+1];
for(int i=0;i<=n;i++)
{
    v[i].clear();
}
for(int i=1;i<=n;i++)
{
    cin>>a[i];
}
for(int i=1;i<=n;i++)
{
    cin>>b[i];
    if(a[i]!=b[i])
    {
        v[b[i]].pb(i);
    }
}
for(int i=1;i<=m;i++)
{
    cin>>c[i];
}
int last=-1;
if(v[c[m]].size()>0)
{
    last=v[c[m]].back();
    v[c[m]].pop_back();
}else
{
    for(int i=1;i<=n;i++)
    {
        if(a[i]==c[m]&&a[i]==b[i])
        {
            last=i;
            break;
        }
    }
}
if(last==-1)
{
    cout<<"NO\n";
    return;
}
vector<int> t;
for(int i=1;i<m;i++)
{
    if(v[c[i]].size()>0)
    {
        t.pb(v[c[i]].back());
        v[c[i]].pop_back();
    }else
    {
        t.pb(last);
    }
    
}
for(int i=1;i<=n;i++)
{
    if(v[i].size()>0)
    {
        cout<<"NO\n";
        return;
    }
}
t.pb(last);
cout<<"YES\n";
for(int i=0;i<t.size();i++)
{
    cout<<t[i]<<" ";
}
cout<<"\n";

}
int main()
{
w(t){solve();}
 return 0;
}