func_code_string: //#pragma GCC target ( avx2 )   //#pragma GCC optimization ( O3 )   //#pragma GCC optimization ( unroll-loops )   #include<bits/stdc++.h>   //#include <ext/pb_ds/assoc_container.hpp>   //#include <ext/pb_ds/tree_policy.hpp>   //using namespace __gnu_pbds;   #define eps 1e-8   #define eq(x,y) (fabs((x)-(y)) < eps)   using namespace std;   typedef long long ll;   typedef long double ld;   typedef pair<int,int>pii;   const ll mod= 998244353;   long double PI = acosl(-1);   const ll infl = 1e17+100;   const int inf = 1e9+100;   const int nmax = 3e5+5;   //const int MAXLG = log2(nmax)+1;   //mt19937 rng(chrono::system_clock::now().time_since_epoch().count());   //typedef tree< int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ost;      bool vis[nmax];   vector<int>g[nmax];      void dfs(int u){       vis[u] = true;       for(int v : g[u]) if(!vis[v])           dfs(v);   }         int main(){          ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);          int tc;       cin>>tc;       while(tc--){           int n,m;           cin>>n>>m;           for(int i=0; i<m; i++){               int u,v;               cin>>u>>v;               g[u].push_back(v);               g[v].push_back(u);           }           bool hoise = false;           bool unposibol = false;           for(int i=1; i<=n; i++){               if(!vis[i]){                   if(!hoise){                       dfs(i);                       hoise = true;                   }                   else unposibol = true;               }           }           if(unposibol) cout<< NO n ;           else{               cout<< YES n ;               for(int i=1; i<=n; i++) vis[i] = false;               vector<int>ans;               set<int>st; st.insert(1);               while(st.size()){                   int u = *st.begin();                   st.erase(u);                   if(vis[u]) continue;                   vis[u] = true;                   ans.push_back(u);                   vector<int>tmp;                   for(int v : g[u]) if(!vis[v]){                       vis[v] = true;                       tmp.push_back(v);                   }                   for(int v : tmp){                       for(int z : g[v]) if(!vis[z]){                           st.insert(z);                       }                   }               }               cout<<ans.size()<<  n ;               for(int x : ans) cout<<x<<   ;               cout<<  n ;           }           for(int i=1; i<=n; i++) vis[i] = false, g[i].clear();       }         }   /*      */   