#include <iostream>
#include <cstdio>
#include <vector>
#include <climits>
using namespace std;
int Mat[51][51];
//int Mat[51][51][51];
struct C {
int idx;
int cost;
}CORE;
//Floyd
int main(int argc, char** argv) {
int T;
scanf("%d", &T);
while (T--) {
int N, M;
scanf("%d %d", &N, &M);
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
Mat[i][j] = N;
}
Mat[i][i] = 0;
}
CORE.cost = CORE.idx = INT_MAX;
while (M--) {
int a, b;
scanf("%d %d", &a, &b);
Mat[a][b] = Mat[b][a] = 1;
}
for (int k = 1; k <= N; ++k) {
for (int i = 1; i <= N; ++i) {
for (int j = 1; j <= N; ++j) {
if (Mat[i][k] == N || Mat[k][j] == N) continue;
if (Mat[i][j] == N || Mat[i][k] + Mat[k][j] < Mat[i][j]) {
Mat[i][j] = Mat[i][k] + Mat[k][j];
}
}
}
}
for (int i = 1; i <= N; ++i) {
int cost = 0;
for (int j = 1; j <= N; ++j) {
cost += Mat[i][j];
}
if (cost < CORE.cost) {
CORE.cost = cost;
CORE.idx = i;
} else if (cost == CORE.cost && i < CORE.idx) {
CORE.idx = i;
}
}
printf("%d\n", CORE.idx);
}
return 0;
}