1 #include<cstdio>
2 #include<iostream>
3 #include<algorithm>
4 #include<cmath>
5 #include<cstring>
6 #include<string>
7 using namespace std;
8 int T,n,m,color[1007];
9 int cnt,head[1007],next[2000007],rea[2000007];
10 struct sb
11 {
12 int l,r;
13 }a[1007];
14
15 bool check(int i,int j)
16 {
17 if (a[i].r<=a[j].l||a[j].r<=a[i].l) return 0;
18 if (a[i].l<=a[j].l&&a[i].r>=a[j].r) return 0;
19 if (a[i].r<=a[j].r&&a[i].l>=a[j].l) return 0;
20 return 1;
21 }
22 struct A
23 {
24 int to,nx;
25 }g[100001];
26 int list[10001];
27 void add(int u,int v)
28 {
29 g[++cnt].to=v; g[cnt].nx=list[u]; list[u]=cnt;
30 }
31
32 void dfs(int u)
33 {
34 for (int i=list[u];i;i=g[i].nx)
35 {
36 int v=g[i].to;
37 if (color[v]==-1)
38 {
39 color[v]=color[u]^1;
40 dfs(v);
41 }
42 }
43 }
44 int main()
45 {
46 scanf("%d",&T);
47 while (T--)
48 {
49 cnt=0;
50 memset(list,0,sizeof(list));
51 memset(color,-1,sizeof(color));
52 scanf("%d%d",&n,&m);
53 for (int i=1;i<=m;i++)
54 {
55 scanf("%d%d",&a[i].l,&a[i].r);
56 if (a[i].l>a[i].r) swap(a[i].l,a[i].r);
57 for (int j=1;j<i;j++)
58 if (check(i,j))
59 {
60 add(i,j);
61 add(j,i);
62 }
63 }
64 for (int i=1;i<=m;i++)
65 if (color[i]==-1)
66 {
67 color[i]=0;
68 dfs(i);
69 }
70 int flag=0;
71 for (int i=1;i<=m;i++)
72 {
73 for (int j=list[i];j;j=g[j].nx)
74 {
75 int u=i,v=g[j].to;
76 if (color[u]==color[v])
77 {
78 flag=1;
79 break;
80 }
81 }
82 if (flag==1) break;
83 }
84 if (flag==1) printf("non\n");
85 else printf("sane\n");
86 }
87 }