#include <bits/stdc++.h>
    using namespace std;
    #define int int64_t
    #define um unordered_map
    #define float double
    #define pb push_back
    #define mp make_pair
    #define F first
    #define S second
    #define B begin()
    #define E end()
    #define all(x) x.begin(), x.end()
    #define sortall(x) sort(all(x))
    #define rall(x) x.rbegin(), x.rend()
    #define revsortall(x) sort(rall(x))
    #define clr(x) memset(x, 0, sizeof(x))
    #define clr_dp(x) memset(x, -1, sizeof(x))
    #define loop(i, n) for(i=0;i<n;i++)
    #define Loop(i, k, n) for(i=k;k<n?i<n:i>n;k<n?i+=1:i-=1)
    #define outarr(i, a, n) loop(i, n){cout << a[i] << " ";}
    #define len length()
    #define si size()
    #define tr(it, x) for(auto it = x.begin(); it != x.end(); it++)
    #define trr(it, x) for(auto it = x.rbegin(); it != x.rend(); it+)
    typedef pair<int, int> pii;
    typedef vector<int> vi;
    typedef vector<pii> vpii;
    typedef vector<vi> vvi;
    const int mod = 1000000007;
    const int MAX=INT_MAX;
    const int MIN=INT_MIN;
    void IO(){
        ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);cout.setf(ios::fixed);
        srand(chrono::high_resolution_clock::now().time_since_epoch().count());
        #ifndef ONLINE_JUDGE
            freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
        #endif
    }
    int gcd(int a, int b)
    {
        if (b == 0)
            return a;
        return gcd(b, a % b); 
         
    }
void resultout(bool ans){
    ans? cout<<"YES":cout<<"NO";cout<<"\n";
}
void run_time_terror(){
    int n,m;
    cin>>n>>m;
    int a[n],b[n],c[m],fre[n+1],frereq[n+1],fregiven[n+1];
    clr(fre);clr(frereq);clr(fregiven);
    for (int i = 0; i < n; ++i)
    {
        cin>>a[i];
    }
    for (int i = 0; i < n; ++i)
    {
        cin>>b[i];
        fre[b[i]]++;
        if(a[i]!=b[i])
            frereq[b[i]]++;
    }
    for (int i = 0; i < m; ++i)
    {
        cin>>c[i];
        fregiven[c[i]]++;
    }
    if(fre[c[m-1]]==0){
        cout<<"no"<<"\n";
        return;
    }
    for (int i = 0; i < n; ++i)
    {
        if(frereq[b[i]]>fregiven[b[i]]){
            cout<<"no"<<"\n";
            return;
        }
    }
    cout<<"yes\n";
    unordered_map<int ,vector<int> > loc;
    for (int i = 0; i < n; ++i){
        if(a[i]!=b[i]){
            loc[b[i]].pb(i+1);
        }
    }
    int ans[m];
    if(loc[c[m-1]].size()==0){
        for (int i = 0; i < n; ++i)
        {
            if(b[i]==c[m-1]){
                ans[m-1]=i+1;
                break;
            }
        }
    }
    else {
        ans[m-1]=loc[c[m-1]].back();
        loc[c[m-1]].pop_back();
    }
    int waste=ans[m-1];
    for (int i = 0; i < m-1; ++i)
    {
        if(loc[c[i]].size()!=0){
            ans[i]=loc[c[i]][loc[c[i]].size()-1];
            loc[c[i]].pop_back();
        }
        else {
            ans[i]=waste;
        }
    }
    for (int i = 0; i < m; ++i)
    {
        cout<<ans[i]<<" ";
    }
    cout<<"\n";
}
int32_t main(){
    cout << setprecision(0);
    IO();
    int tt=1;
    cin>>tt;
    while(tt--){
        run_time_terror();
    }
    // cerr<<(float)clock()/CLOCKS_PER_SEC*1000<<" ms"<<endl;
    return 0;
}