#include <bits/stdc++.h>
using namespace std;
long long poww(long long a, long long b, long long md) {
  return (!b ? 1
             : (b & 1 ? a * poww(a * a % md, b / 2, md) % md
                      : poww(a * a % md, b / 2, md) % md));
}
const long long MAXN = 1e6 + 10;
const long long INF = 8e18;
const long long MOD = 1e9 + 7;
vector<int> g[200001];
int n, m, ui, vi;
int dep[200001];
bool vis[200001];
void bfs(int u) {
  queue<int> q;
  q.push(u);
  vis[u] = 1;
  dep[u] = 0;
  while (!q.empty()) {
    int v = q.front();
    q.pop();
    for (auto child : g[v]) {
      if (!vis[child]) {
        vis[child] = 1;
        dep[child] = dep[v] + 1;
        q.push(child);
      }
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t;
  cin >> t;
  while (t--) {
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
      cin >> ui >> vi;
      g[ui].push_back(vi);
      g[vi].push_back(ui);
    }
    bfs(1);
    vector<int> e, o;
    for (int i = 1; i <= n; i++) {
      if (dep[i] & 1)
        o.push_back(i);
      else
        e.push_back(i);
    }
    if (e.size() < o.size()) {
      cout << e.size() << '\n';
      for (int i = 0; i < e.size(); i++) cout << e[i] << " ";
      cout << '\n';
    } else {
      cout << o.size() << '\n';
      for (int i = 0; i < o.size(); i++) cout << o[i] << " ";
      cout << '\n';
    }
    memset(vis, 0, sizeof vis);
    for (int i = 1; i <= n; i++) g[i].clear();
  }
  return 0;
}
