//有n个成员,并查集开两倍空间
//1~n为一组, n+1~2n为一组。a与b互斥,则a与b反(即b+n)为同一集合,
//同时b与a反(a+n)为同一集合
//在union操作中,引入w ,w越大,表面它的根连接的点越多
//合并时确立关系
#include<iostream>
using namespace std;
const int N=1e6;
int p[N];
int w[N];
int find(int x)
{
if(p[x]!=x)
p[x]=find(p[x]);
return p[x];
}
void unite(int x, int y)
{
int px=find(x),py=find(y);
if (px==py)
return;
else if(w[px]>w[py])
p[py] = px;
else
{
p[px]=py;
if (w[px]==w[py])
w[py]+=w[px];
}
}
bool judge(int x,int y)
{
int px=find(x);
int py=find(y);
return px==py;
}
int main()
{
int t;
cin>>t;
int cnt=0;
int n,m;
while(t--)
{
bool flag=1;
cin>>n>>m;
for(int i=1;i<=2*n;i++)
p[i]=i,w[i]=1;
int a,b;
for(int i=0;i<m;i++)
{
cin>>a>>b;
if (judge(a,b)||judge(a,b+n))
{
if (judge(a,b))
flag=false;
//是异性则符合条件继续
else
continue;
}
else
{
unite(a, b+n);
unite(a+n, b);
}
}
printf("Scenario #%d:\n",++cnt);
if(!flag)
printf("Suspicious bugs found!\n\n");
else
printf("No suspicious bugs found!\n\n");
}
}