#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 100005;
int Set[M*2];
int n, m;
int Find(int x) {
return x == Set[x] ? x : Set[x] = Find(Set[x]);
}
void Union(int x, int y) {
x = Find(x);
y = Find(y);
if(x != y) {
Set[x] = y;
}
}
int main()
{
int T;
int a, b;
char str[3];
scanf("%d", &T);
while(T--) {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n*2; i++) {
Set[i] = i;
}
for(int i = 0; i < m; i++) {
scanf("%s%d%d", str, &a, &b);
if(str[0] == 'D') {
Union(a, b + n); //敌人的敌人是朋友,
Union(a+n, b);
}
if(str[0] == 'A') {
if(Find(a) != Find(b) && Find(a+n) != Find(b)) { //μDèËμÄμDèËêÇÅóóÑ¡£
printf("Not sure yet.\n");
}
else if(Find(a) == Find(b)) {
printf("In the same gang.\n");
}
else if(Find(a + n) == Find(b) || Find(a) == Find(b + n))
printf("In different gangs.\n");
}
}
}
return 0;
}
#include <cstring>
#include <cstdio>
using namespace std;
const int M = 100005;
int Set[M*2];
int n, m;
int Find(int x) {
return x == Set[x] ? x : Set[x] = Find(Set[x]);
}
void Union(int x, int y) {
x = Find(x);
y = Find(y);
if(x != y) {
Set[x] = y;
}
}
int main()
{
int T;
int a, b;
char str[3];
scanf("%d", &T);
while(T--) {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n*2; i++) {
Set[i] = i;
}
for(int i = 0; i < m; i++) {
scanf("%s%d%d", str, &a, &b);
if(str[0] == 'D') {
Union(a, b + n); //敌人的敌人是朋友,
Union(a+n, b);
}
if(str[0] == 'A') {
if(Find(a) != Find(b) && Find(a+n) != Find(b)) { //μDèËμÄμDèËêÇÅóóÑ¡£
printf("Not sure yet.\n");
}
else if(Find(a) == Find(b)) {
printf("In the same gang.\n");
}
else if(Find(a + n) == Find(b) || Find(a) == Find(b + n))
printf("In different gangs.\n");
}
}
}
return 0;
}