#include <bits/stdc++.h>
using namespace std;
long long int ipow(long long int base, long long int exp) {
  long long int result = 1;
  for (;;) {
    if (exp & 1) result *= base;
    exp >>= 1;
    if (!exp) break;
    base *= base;
  }
  return result;
}
long long int p(long long int d) {
  unsigned long long s = 1;
  long long int cnt{0};
  while (d > s) s = ipow(2, cnt);
  return s - d;
}
int main() {
  long long int t;
  cin >> t;
  while (t--) {
    long long int n, m;
    cin >> n >> m;
    vector<vector<long long int>> AJ(n, vector<long long int>());
    vector<long long int> color(n, 0);
    for (int i = 0; i < m; i++) {
      long long int a, b;
      cin >> a >> b;
      AJ[a - 1].push_back(b - 1);
      AJ[b - 1].push_back(a - 1);
    }
    queue<long long int> e;
    e.push(0);
    vector<long long int> h(n, -1);
    h[0] = 0;
    while (e.size() > 0) {
      for (int i = 0; i < AJ[e.front()].size(); i++) {
        if (h[AJ[e.front()][i]] == -1)
          e.push(AJ[e.front()][i]);
        else
          continue;
        h[AJ[e.front()][i]] = h[e.front()] + 1;
      }
      e.pop();
    }
    long long int f{0};
    for (int i = 0; i < n; i++)
      if (h[i] % 2)
        color[i] = 1;
      else
        color[i] = 2;
    for (int i = 0; i < n; i++)
      if (color[i] == 1) f++;
    cout << min(f, n - f) << endl;
    if (f < n - f) {
      for (int i = 0; i < n; i++)
        if (color[i] == 1) cout << i + 1 << " ";
    } else
      for (int i = 0; i < n; i++)
        if (color[i] == 2) cout << i + 1 << " ";
    for (int i = 0; i < n; i++)
      ;
    cout << endl;
  }
  return 0;
}
