#include <bits/stdc++.h>

using namespace std;


vector<vector<int>> v(100067);
vector<int> prodjen(100067);
queue<pair<int , int>> veze;

void dfs(int br , int boja){
    prodjen[br] = boja;
    int komsija;
    for(int i = 0; i<v[br].size(); i++){
        komsija = v[br][i];
        if (prodjen[komsija] == boja)continue;
        veze.push({komsija , br});
        dfs(komsija , boja);
    }
    return;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
//    vector<vector<int>> v1(3, vector<int>(3));
//    priority_queue<int,vector<int>,greater<int>>pq;
    int t , n , m , s , a , b;
    cin>>t;
    for(int ii = 1; ii<=t; ii++){
        //-- OD KECA
        cin>>n>>m>>s;
        vector<bool> marko(n);
//        for(int i = 1; i<=n; i++){
//            cout<<i<<":   ";
//            for(int j = 0; j<v[i].size(); j++){
//                cout<<v[i][j]<<" ";
//            }
//            cout<<"\n";
//        }
        bool minus1 = false;
        for(int i= 0; i<s; i++){
            cin>>a;
            marko[a] = true;
        }
        for(int i = 0; i<m; i++){
            cin>>a>>b;
            if(!marko[b]){v[a].push_back(b);}
            if(!marko[a]){v[b].push_back(a);}
        }


        for(int i = 1; i<=n; i++){
            if(v[i].size() == 0) minus1 = true;
        }
        if(minus1){
            cout<<"-1\n";
            for(int i = 1; i<=n; i++){
                v[i] = {};
            }
            continue;
        }

        a = 1;
        while(marko[a]){
            a++;
        }
        dfs(a , ii);

        for(int i = 1; i<=n; i++){
            if(prodjen[i] != ii && !marko[i]) minus1 = true;
        }
        if(minus1){
            cout<<"-1\n";
            for(int i = 1; i<=n; i++){
                v[i] = {};
            }
            continue;
        }

        cout<<s+veze.size()<<"\n";
        while(!veze.empty()){
            cout<<veze.front().first<<" "<<veze.front().second<<"\n";
            veze.pop();
        }
        for(int i = 1; i<=n; i++){
            if(marko[i]) cout<<i<<" "<<v[i][0]<<"\n";
        }

        for(int i = 1; i<=n; i++){
            v[i] = {};
        }
    }

}