#include <bits/stdc++.h>

using namespace std;

vector<int> mely(vector<vector<int>> szom, int start)
{
    int n=szom.size();

    stack<int> sor;

    vector<int> volt(n,-1);

    vector<int> sorrend;

    volt[start]=-10;

    sorrend.push_back(start);

    sor.push(start);

    while(!sor.empty())
    {
        int most=sor.top();
        bool talalt=false;
        for(int i=1; i<n; i++)
        {
            if(szom[most][i]==1 && volt[i]==-1)
            {
                talalt=true;
                volt[i]=most;
                sorrend.push_back(i);
                sor.push(i);
                break;
            }
        }

        if(!talalt)
        {
            sor.pop();
        }
    }

    return volt;

}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t;
    cin>>t;

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

        vector<int> korlat(s);

        for(int i=0; i<s; i++)
        {
            cin>>korlat[i];
        }

        vector<vector<int>> szom(n+1, vector<int>(n+1));
        vector<pair<int,int>> ki;

        int egyik, masik;

        for(int i=0; i<m; i++)
        {
            cin>>egyik>>masik;
            szom[egyik][masik]=1;
            szom[masik][egyik]=1;
            ki.push_back(make_pair(egyik,masik));
        }

        for(int i=0; i<s; i++)
        {
            for(int j=1; j<=n; j++)
            {

                bool elso=false;
                if(szom[korlat[i]][j]==1 && !elso)
                {
                    szom[korlat[i]][j]=0;
                }
            }
        }

        vector<int> sorrendem;
        sorrendem=mely(szom,ki[1].first);



        cout<<n-1<<endl;
        for(int i=1; i<sorrendem.size(); i++)
        {
            if(sorrendem[i]!=-10)
                cout<<i<<" "<<sorrendem[i]<<endl;
        }







    }
    return 0;
}