#include <bits/stdc++.h>
#define pb push_back
#define ll long long int
#define pi pair<int, int>
#define all(x) x.begin(), x.end()

using namespace std;

const int nmax=1e5+5;

bool oznacen[nmax];

void DFS(int cvor, vector<vector<ll>>& graf, vector<bool>& visited, vector<pi>& vez)
{
    visited[cvor]=true;
    for(auto u: graf[cvor])
    {
        if(!visited[u]) {vez.pb({cvor, u}); DFS(u, graf, visited, vez);}
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    ll t;
    cin>>t;
    while(t--)
    {
        ll n, m, s;
        cin>>n>>m>>s;
        for(int i=1; i<n+1; i++) oznacen[i]=false;
        for(int i=0; i<s; i++)
        {
            ll p;
            cin>>p;
            oznacen[p]=true;
        }
        vector<vector<ll>> graf(n+1), grafizb(n+1);
        for(int i=0; i<m; i++)
        {
            ll u, v;
            cin>>u>>v;
            graf[u].pb(v);
            graf[v].pb(u);
            if(!oznacen[u] && !oznacen[v])
            {
                grafizb[u].pb(v);
                grafizb[v].pb(u);
            }
        }
        vector<bool> visited(n+1, false);
        vector<pi> vez;
        for(int i=1; i<n+1; i++)
        {
            if(!oznacen[i]) {DFS(i, grafizb, visited, vez); break;}
        }
        bool moze=true;
        for(int i=1; i<n+1; i++)
        {
            if(!visited[i] && !oznacen[i]) moze=false;
        }
        if(!moze)
        {
            cout<<-1<<"\n";
            break;
        }
        for(int i=1; i<n+1; i++)
        {
            if(!oznacen[i])
            {
                for(auto x: graf[i])
                {
                    if(!visited[x] && oznacen[x])
                    {
                        visited[x]=true;
                        vez.pb({i, x});
                    }
                }
            }
        }
        for(int i=1; i<n+1; i++)
        {
            if(!visited[i]) moze=false;
        }
        if(!moze)
        {
            cout<<-1<<"\n";
            break;
        }
        cout<<vez.size()<<"\n";
        for(auto x:vez)
        {
            cout<<x.first<<" "<<x.second<<"\n";
        }
    }
}