#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int N=3e5+10;
int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
void print(LL x){
    if(x>9) print(x/10);
    putchar(x%10+'0');
}
int n,m;
vector<int> r[N];
int vis[N];
int tp;
int ans[N];
int h,t;
int q[N];
void get(int x){
	int y;
	for(int i=0;i<r[x].size();++i){
		y=r[x][i];
		if(vis[y]) continue;
		vis[y]=1;
		q[++t]=y;
	}
	while(h<=t){
		x=q[h];++h;
		for(int i=0;i<r[x].size();++i){
			y=r[x][i];
			if(vis[y]) continue;
			vis[y]=1;ans[++tp]=y;
			get(y);
		}
	}
}
int main(){
	int T;scanf("%d",&T);
	int u,v;
	while(T--){
		tp=0;
		scanf("%d%d",&n,&m);
		for(int i=1;i<=n;++i) r[i].clear();
		for(int i=1;i<=m;++i){
			scanf("%d%d",&u,&v);
			r[u].push_back(v);
			r[v].push_back(u);
		}
		for(int i=1;i<=n;++i) vis[i]=0;
		vis[1]=1;ans[++tp]=1;
		h=1;t=1;
		get(1);
		bool f=0;
		for(int i=1;i<=n;++i) if(vis[i]==0) f=1;
		if(f) puts("NO");
		else{
			puts("YES");
			printf("%d\n",tp);
			sort(ans+1,ans+1+tp);
			for(int i=1;i<=tp;++i) printf("%d ",ans[i]);puts("");
		}
	}
	return 0;
}