#include <bits/stdc++.h>
using namespace std;
typedef long long li;
typedef long double ld;
#define pb push_back
#define mp make_pair
#define pi pair<li, li>
#define ppi pair<li, pi>
#define vi vector<li>
#define f first
#define s second
#define co() cout.precision(10);
#define F for (li i = 0; i < n; i++)
#define ln cout << endl;
#define cn continue;
#define ret return 0;
#define mid(l, r) l + (r - l) / 2
#define all(v) v.begin(), v.end()
#define allr(v) v.rbegin(), v.rend()
#define MAXN 100005
#define CLOCK cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
//memset(arr, 0, sizeof arr);
const li mod = 1000000007;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t = 1;
    cin >> t;
    while (t--)
    {
        li n, m, i;
        cin >> n >> m;
        li a[n], b[n], c[m];
        map<li, li> m1, m2, m3, p;
        vi ans(m, 0), adj[MAXN];
        for (i = 0; i < n; i++)
        {
            cin >> a[i];
        }
        for (i = 0; i < n; i++)
        {
            cin >> b[i];
        }
        for (i = 0; i < m; i++)
        {
            cin >> c[i];
        }
        li cnt = 0, in;
        for (li i = 0; i < n; i++)
        {
            if (a[i] != b[i])
            {
                adj[b[i]].pb(i + 1), cnt++;
            }
            else
            {
                m1[a[i]] = i + 1;
            }
        }
        // li unused = 0, used = 0, in = -1, jn = -1;
        // for (i = 0; i < n; i++)
        // {
        //     cin >> b[i];
        //     adj[b[i]].pb(i + 1);
        //     if (a[i] != b[i])
        //     {
        //         in = i;
        //         m1[b[i]]++;
        //         unused++;
        //     }
        //     else
        //         used++;
        //     m2[b[i]]++;
        // }
        // li f = 0;
        stack<li> q;
        for (li i = 0; i < m; i++)
        {
            if (adj[c[i]].size() == 0)
            {
                if (!m1[c[i]])
                    q.push(i);
                else
                {
                    ans[i] = m1[c[i]];
                    while (q.size())
                    {
                        li x = q.top();
                        q.pop();
                        ans[x] = m1[c[i]];
                    }
                }
            }
            else
            {
                in = adj[c[i]].back();
                adj[c[i]].pop_back();
                while (q.size())
                {
                    li x = q.top();
                    q.pop();
                    ans[x] = in;
                }
                //         for (i = 0; i < m; i++)
                // {
                //     if (ans[i] == 0)
                //         ans[i] = jn;
                //     // cout << ans[i] << " ";
                //     if (ans[i] == 0)
                //     {
                //         f = 1;
                //         break;
                //     }
                //     a[ans[i] - 1] = c[i];
                // }
                // for (i = 0; i < n; i++)
                // {
                //     if (a[i] != b[i])
                //     {
                //         f = 1;
                //         break;
                //     }
                // }
                // if (f)
                // {
                //     cout << "NO\n";
                //     continue;
                // }
                // cout << "YES\n";
                // for (i = 0; i < m; i++)
                //     cout << ans[i] << " ";
                ans[i] = in;
                cnt--;
                m1[c[i]] = in;
            }
        }
        // for (i = 0; i < m; i++)
        // {
        //     cin >> c[i];
        //     m3[c[i]]++;
        //     if (unused == 0)
        //     {
        //         if (adj[c[i]].size())
        //             ans[i] = adj[c[i]][0], jn = ans[i];
        //         continue;
        //     }
        //     if (m3[c[i]] > m2[c[i]])
        //     {
        //         if (adj[c[i]].size())
        //             ans[i] = adj[c[i]][0], jn = ans[i];
        //     }
        //     else
        //     {
        //         ans[i] = adj[c[i]][m3[c[i]] - 1], jn = ans[i];
        //     }
        // }
        if (cnt)
            cout << "NO\n";
        else if (q.size())
            cout << "NO\n";
        else
        {
            cout << "YES\n";
            for (i = 0; i < m; i++)
                cout << ans[i] << " ";
            ln;
        }
    }
}