#include <bits/stdc++.h>

using namespace std;

void bfs(vector<vector<int>> &v, vector<bool> &posecenost, vector<int>&res, queue<int> red, int pocetak){
    red.push(pocetak);
    posecenost[pocetak]=true;
    while (!red.empty()){
            int p = v[red.front()].size();
        for(int each : v[red.front()] ){
            if (posecenost[each]==false){
                posecenost[each]=true;
                red.push(each);}
        }
        res.push_back(red.front());
        red.pop();
    }
}

int main()
{
    int t; cin >> t;
    for(int q=0; q<t;q++){
        int n, m, s;
        cin >> n >> m >> s;
        vector<int>losih;
        vector<vector<int>> veze(n+1);
        for(int i=0; i<s; i++){
            int a; cin >> a;
            losih.push_back(a);
        }

        for(int i =0; i<m; i++){
            int a,b; cin >> a >>b;
            veze[a].push_back(b);
            veze[b].push_back(a);
        }
      /*  for(int i=0; i<n+1;i++){
                int p = veze[i].size();
            for(int j=0; j<p;j++){
                cout << veze[i][j] << " ";
            }
            cout << "\n";
        }*/
        if (s==1){
            int pocet=losih[0];

             vector<bool> pos(n+1, false);
              vector<int>res;
               queue<int> red;
            bfs(veze,pos, res,red,pocet);
            int a=res.size();
            for(int i=0; i<res.size(); i++){
            cout << res[i] << ' ';
            
        }
        

    }
    return 0;
}