#include <bits/stdc++.h>

using namespace std;

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(false);

    int t;

    cin>>t;

    int n,m,s;
    while(t--){
        cin>>n>>m>>s;

        vector<int> targets(s);

        for(int i=0;i<s;i++){
            cin>>targets[i];
            targets[i]--;
        }
        sort(targets.begin(),targets.end());

        vector<pair<int,int>> a(m);

        int x,y;
        for(int i=0;i<m;i++){
            cin>>x>>y;
            x--;
            y--;
            a[i] = {x,y};
        }

        vector<bool> imamo(n,false);
        vector<pair<int,int>> ans;

        vector<vector<int>> ans_vector(n);

        for(int i =0;i<m;i++){

            int prvi = a[i].first;
            int drugi = a[i].second;

            bool prvi_target = (binary_search(targets.begin(),targets.end(), prvi));
            bool drugi_target = (binary_search(targets.begin(),targets.end(), drugi));

            if(prvi_target && drugi_target){
                continue;
            }

            if(imamo[prvi] && prvi_target){
                continue;
            }

            if(imamo[drugi] && drugi_target){
                continue;
            }

            if(imamo[prvi] && imamo[drugi]){
                continue;
            }

            imamo[prvi] = true;
            imamo[drugi] = true;

            ans_vector[prvi].push_back(drugi);
            ans_vector[drugi].push_back(prvi);

            ans.push_back({prvi,drugi});
        }

        vector<bool> visited(n,false);

        queue<int> q;
        q.push(0);

        while(!q.empty()){

            int val = q.front();
            q.pop();

            if(visited[val]){
                continue;
            }
            visited[val] = true;

            for(const auto el : ans_vector[val]){

                if(!visited[el]){
                    q.push(el);
                }
            }
        }

        bool tacno = true;
        for(int i=0;i<visited.size();i++){
            if(visited[i] == false){
                tacno = false;
                break;
            }
        }

        if(tacno){
            cout<<ans.size()<<'\n';

            for(auto z : ans){
                cout<<z.first+1<<" "<<z.second+1<<'\n';
            }
        }else{
            cout<<"-1"<<'\n';
        }


    }

    return 0;
}