#include <stdio.h>
#include <stdlib.h>

typedef struct mostTip{
    int var1;
    int var2;
}mostTip;

int imaViseOdJedneVeze(mostTip niz[100000], int sputani[],int brojMostova, int brojSputanih){

    for(int i=0; i<brojSputanih;i++){
        int brojac=0;
        for(int j=0; j<brojMostova;j++){
            if(niz[j].var1==sputani[i] || niz[j].var2==sputani[i]) brojac++;
            if(brojac>1)
                return 1;
        }
    }return 0;
}

int main()
{
    int brojPonavljanja;
    scanf("%d", &brojPonavljanja);
    int brojOsoba[brojPonavljanja], brojMostova[brojPonavljanja], brojSputanih[brojPonavljanja];
    int sputani[brojPonavljanja][100000];
    mostTip mostovi[brojPonavljanja][100000];

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

        scanf("%d %d %d", &brojOsoba[i], &brojMostova[i], &brojSputanih[i]);
        for(int j=0;j<brojSputanih[i];j++){
            scanf("%d",&sputani[i][j]);
        }
        for(int j=0; j<brojMostova[i];j++){
            scanf("%d%d",&mostovi[i][j].var1,&mostovi[i][j].var2);
        }
    }
    for(int i=0; i<brojPonavljanja;i++){
        if(brojOsoba[i]-1==brojMostova[i] && imaViseOdJedneVeze(mostovi[i], sputani[i], brojMostova[i], brojSputanih[i])){
            printf("%d\n",brojMostova);
            for(int j=0;j<brojMostova[i];j++){
                printf("%d %d",mostovi[i][j].var1,mostovi[i][j].var2);
            }
        }
        else{
            printf("-1\n");
        }
    }
    return 0;
}