#include <bits/stdc++.h>
using namespace std;
long long N,M,S,s[400011],a,b,broj,T,brmst,brex;
bool ex[400011];
int komp[400011],mst[400011];
vector <int> pov[400011],pravi[400011];
queue <int> q;
vector <int> res1,res2;

void ret(){
    for(int i=1;i<=N;i++){
        ex[i]=0;
        komp[i]=0;
        mst[i]=0;
        pov[i].clear();
        pravi[i].clear();
    }
    broj=0;
    brmst=0;
    brex=0;
    res1.clear();
    res2.clear();
    return;
}
void PoveziNeEx(){
    for(int i=1;i<=N;i++){
        if(ex[i]==0 && komp[i]==0){
            ///sve njene povezati
            komp[i]=1;
            for(int j=0;j<pravi[i].size();j++){
                if(komp[pravi[i][j]]==0){
                    komp[pravi[i][j]]=1;
                    brmst++;
                    res1.push_back(i);
                    res2.push_back(pravi[i][j]);
                }
            }
        }
    }

    return;
}
void PoveziEx(){
    for(int i=1;i<=N;i++){
        if(ex[i]){
            for(int j=0;j<pov[i].size();j++){
                if(ex[pov[i][j]]==0){
                    brex++;
                    res1.push_back(i);
                    res2.push_back(pov[i][j]);
                    break;
                }
            }
        }
    }
    return;
}


int main(){
    cin >> T;
    while(T--){
        cin >> N >> M >> S;
        for(int i=1;i<=S;i++){
            cin >> s[i];
            ex[s[i]]=1;
        }
        for(int i=1;i<=M;i++){
            cin >> a >> b;
            pov[a].push_back(b);
            pov[b].push_back(a);
            if(!ex[a] && !ex[b]){
                pravi[a].push_back(b);
                pravi[b].push_back(a);
            }
        }
        brmst=0;
        PoveziNeEx();
        if(brmst!=(N-S-1)){
            cout << -1 << endl;
            ret();
            continue;
        }
        brex=0;
        PoveziEx();
        if(brex!=S){
            cout << -1 << endl;
            ret();
            continue;
        }
        cout << res1.size()<<endl;
        for(int i=0;i<res1.size();i++){
            cout << res1[i] << " " << res2[i] << "\n";
        }
        ret();
    }

    return 0;
}