#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int t;
    cin>>t;
    for(int i=0;i<t;i++){
        int n,m,s,a,b;
        cin>>n>>m>>s;
        vector<bool>marko(n,false);
        for(int j=0;j<s;j++){
            cin>>a;
            a--;
            marko[a]=true;
        }
        vector<vector<int>>sused(n);
        for(int j=0;j<m;j++){
            cin>>a>>b;
            a--;
            b--;
            sused[a].push_back(b);
            sused[b].push_back(a);
        }
        queue<int>red;
        int pocetni=-1,pok=0;
        while(pocetni==-1 && pok<n){
            if(!marko[pok]){
                pocetni=pok;
            }else{
                pok++;
            }
        }
        if(pocetni==-1){
            cout<<-1<<endl;
        }else{
            red.push(pocetni);
            vector<int>izlaz;
            vector<bool>posecen(n,false);
            posecen[pocetni]=true;
            while(!red.empty()){
                int trenutni=red.front();
                for(int j=0;j<sused[trenutni].size();j++){
                    if(!posecen[sused[trenutni][j]]){
                        posecen[sused[trenutni][j]]=true;
                        if(!marko[sused[trenutni][j]]){
                            red.push(sused[trenutni][j]);
                        }
                        izlaz.push_back(trenutni);
                        izlaz.push_back(sused[trenutni][j]);
                    }
                }
                red.pop();
            }
            if(izlaz.size()!=2*n-2){
                cout<<-1<<endl;
            }else{
                cout<<n-1<<endl;
                for(int j=0;j<n-1;j++){
                    cout<<izlaz[2*j]+1<<" "<<izlaz[2*j+1]+1<<endl;
                }
            }

        }
    }

    return 0;
}