#include <bits/stdc++.h>
using namespace std;
void dfs(long long n, long long i,
         unordered_map<long long, vector<long long>> &adj, vector<bool> &vis,
         vector<long long> &a1, vector<long long> &a2) {
  if (vis[n]) return;
  vis[n] = true;
  if (i == 0)
    a1.push_back(n);
  else
    a2.push_back(n);
  for (auto &it : adj[n]) {
    if (!vis[it]) dfs(it, i ^ 1, adj, vis, a1, a2);
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long t;
  cin >> t;
  while (t--) {
    long long n, m;
    cin >> n >> m;
    unordered_map<long long, vector<long long>> adj;
    vector<bool> vis(n + 1, false);
    vector<long long> a1, a2;
    for (long long i = 0; i < m; i++) {
      long long x, y;
      cin >> x >> y;
      adj[x].push_back(y);
      adj[y].push_back(x);
    }
    queue<pair<long long, long long>> q;
    q.push({1, 0});
    while (q.size() > 0) {
      auto it = q.front();
      q.pop();
      long long x, y;
      tie(x, y) = it;
      if (vis[x]) continue;
      vis[x] = true;
      if (y == 0)
        a1.push_back(x);
      else
        a2.push_back(x);
      for (auto &it : adj[x]) {
        if (!vis[it]) q.push({it, y ^ 1});
      }
    }
    if (a1.size() <= a2.size()) {
      cout << a1.size() << '\n';
      for (auto x : a1) cout << x << " ";
      cout << endl;
      ;
    } else {
      cout << a2.size() << '\n';
      for (auto x : a2) cout << x << " ";
      cout << endl;
      ;
    }
  }
  return 0;
}
