#include<bits/stdc++.h>
using namespace std;
#define re register
const int N=100005;
int T,n;
int s[N],e[N],d[N];
inline int read(){
int ans=0,opt=1;char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-') opt=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
ans=(ans<<3)+(ans<<1)+ch-'0';
ch=getchar();
}
return ans*opt;
}
inline long long check(int x){
long long ans=0;
for(re int i=1;i<=n;i++){
if(x<s[i]) continue;
ans=ans+(min(x,e[i])-s[i])/d[i]+1;//如果此时出现了奇数个成员,那么答案一定小于mid
//如果此时出现了偶数个成员,那么答案一定大于mid
}
return ans;
}
int main()
{
cin>>T;
while(T--){
n=read();
long long sum=0;
int minn=0x3f3f3f3f,maxn=0;
for(re int i=1;i<=n;i++){
s[i]=read();e[i]=read();d[i]=read();
sum+=(e[i]-s[i])/d[i]+1;
minn=min(s[i],minn);maxn=max(e[i],maxn);
}
if(sum%2==0) cout<<"Poor QIN Teng:("<<endl;
else{
int l=minn,r=maxn;
while(l<r){
int mid=l+r>>1;
if(check(mid)&1)
r=mid;
else l=mid+1;
}
int res=0;
for(re int i=1;i<=n;i++){
if(s[i]>l||l>e[i]) continue;
if((l-s[i])%d[i]==0) res++;
}
printf("%d %d\n",l,res);
}
}
return 0;
}