#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;   }   