#P10737. 离线nba

离线nba

Background

Special for beginners, ^_^

Description

zyh是一个忠实的马(lei)刺(ting)球迷,他要在机房举行一次盛大的nba观看活动。这一天的nba在两个时间段举行, zyh规定,机房的n个同学(包括zyh)必须在每个时间段里各选择一场nba观看(这里我们假设有无限多的比赛可供选择),但不能有两个人看的两场nba都相同。nba结束后,zyh决定统计哪些人看过同一场nba,所以他收集了m条信息,每条信息是某两个人x和y看过同一场nba。多疑的zyh总觉得有人在欺骗自己(也可能是自己欺骗自己),决定验证一下这m条信息是否可能同时成立。

Format

Input

第一行为一个正整数T,表示zyh会强迫同学们看T天的nba。

接下来的数据分成T部分,每部分第一行为两个正整数n和m,n表示这一天有n个同学来机房(编号为0~n-1),m表示信息量。

紧接着m行每行两个数x和y,表示x和y在这一天看过同一场nba。(0<=x,y<n,x≠y)(保证一天内的信息不会重复出现)

Output

一共T行,“YES”表示这一天的所有信息可能同时成立,“NO”表示不可能。

Samples

2
4 4
0 1
0 2
1 2
2 3
4 5
0 1
0 2
1 2
2 3
0 3
YES
NO

样例解释: 第一天:(方案并不唯一)

第一个时间段:

0、1、2一起看一场,3自己看一场

第二个时间段:

2、3一起看一场,0和1都自己一个人看。

对于30%的数据 T<=20,1<=n<=15,0<=m<=10

对于另外30%的数据T<=100,1<=n<=50,0<=m<=100, 且每一天 每个人被提及的次数不超过4次

对于100%的数据 T<=2000,1<=n<=100,0<=m<=1000