func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using vi = vector<long long>;   using pii = pair<long long, long long>;   const signed INF_ = 1001001001;   const long long INF = 1001001001001001001LL;   const long long DX[9] = {0, 1, 0, -1, 1, 1, -1, -1, 0},                   DY[9] = {-1, 0, 1, 0, -1, 1, 1, -1, 0};   template <class T>   ostream &operator<<(ostream &os, const vector<T> &v) {     for (auto i = (begin(v)); i != (end(v)); ++i)       os << *i << (i == end(v) - 1 ?    :    );     return os;   }   template <class T>   istream &operator>>(istream &is, vector<T> &v) {     for (auto i = (begin(v)); i != (end(v)); ++i) is >> *i;     return is;   }   template <class T, class U>   istream &operator>>(istream &is, pair<T, U> &p) {     is >> p.first >> p.second;     return is;   }   template <class T, class U>   bool chmax(T &a, const U &b) {     return a < b ? a = b, 1 : 0;   }   template <class T, class U>   bool chmin(T &a, const U &b) {     return a > b ? a = b, 1 : 0;   }   template <class T>   void PSUM(T &c) {     partial_sum(begin(c), end(c), begin(c));   }   template <class T>   using heap = priority_queue<T, vector<T>, greater<T>>;   struct before_main_function {     before_main_function() {       cin.tie(0);       ios::sync_with_stdio(0);       cout << setprecision(15) << fixed;     }   } before_main_function;   signed main() {     long long N, M;     cin >> N >> M;     vector<vector<long long>> g(N);     vector<long long> deg(N);     for (long long i = 0, ilen = (long long)(M); i < ilen; ++i) {       long long a, b;       cin >> a >> b;       a--, b--;       g[a].push_back(b);       g[b].push_back(a);       deg[a]++;       deg[b]++;     }     vector<pii> ans;     vector<bool> vis(N);     {       queue<long long> q;       long long st = max_element(begin(deg), end(deg)) - begin(deg);       q.push(st);       vis[st] = true;       while (q.size()) {         long long v = q.front();         q.pop();         for (auto &&w : g[v]) {           if (vis[w]) continue;           vis[w] = true;           ans.push_back({v + 1, w + 1});           q.push(w);         }       }     }     for (auto &&p : ans) {       cout << p.first <<     << p.second << endl;     }     return (0 ^ 0 ^ 0);   }   