/**
Problem F. Grab The Tree
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6324
题意:选走任意树上不相邻的点进行异或,将未选走的节点进行异或和 比较两者大大小 (> Q) (< T) (= D)
对于所有的节点进行异或得到sum 如果sum==0 那么必定是存在 a==b 这两部分的 由于 a^a=0,a^0=a;
如果说 sum>0 那么必定a和b是不相等的,不相等的话 我们取走最高位的那个1 ;
也就是最前面那个不相同的那个数的值当前这个数就是最大的; 罪域这种局面肯定值最大的;
*/
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main(){
int t;scanf("%d",&t);
while(t--){
ll n;scanf("%lld",&n);
ll x=0,Max=0,kk=n;
while(n--){
ll tmp;scanf("%lld",&tmp);x^=tmp;
Max=max(tmp,Max);
}kk--;
while(kk--){
ll l,r;scanf("%lld %lld",&l,&r);
}
if(x==0) puts("D");
else puts("Q");
}
return 0;
}