#include <bits/stdc++.h>
using namespace std;
long double PI = 3.14159265358979323846;
long long int nC2(long long int num) {
  int num1 = num - 1;
  if (num % 2)
    num1 /= 2;
  else
    num /= 2;
  num *= num1;
  return num;
}
long long int fact(long long int num, long long int mod) {
  long long int ans = 1;
  for (int i = 2; i <= num; i++) {
    ans *= i;
    ans = ans % mod;
  }
  return ans;
}
long long int sigma(long long int num) {
  long long int num1 = num + 1;
  if (num & 1)
    num1 /= 2;
  else
    num /= 2;
  return num1 * num;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, m;
  cin >> n >> m;
  vector<vector<int>> adj_list(n);
  vector<int> visited(n, 0), edg_cnt(n, 0);
  vector<pair<int, int>> ans;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    a--;
    b--;
    adj_list[a].push_back(b);
    adj_list[b].push_back(a);
    edg_cnt[a]++;
    edg_cnt[b]++;
  }
  int root = max_element(edg_cnt.begin(), edg_cnt.end()) - edg_cnt.begin();
  queue<pair<int, int>> Q;
  Q.push(make_pair(root, -1));
  while (!Q.empty()) {
    int top = Q.front().first, parent = Q.front().second;
    Q.pop();
    if (visited[top]) continue;
    visited[top] = 1;
    if (parent != -1) ans.push_back(make_pair(top, parent));
    for (int i = 0; i < adj_list[top].size(); i++) {
      int num = adj_list[top][i];
      if (visited[num]) continue;
      Q.push(make_pair(num, top));
    }
  }
  for (int i = 0; i < n - 1; i++)
    cout << ans[i].first + 1 << ' ' << ans[i].second + 1 << endl;
  return 0;
}
