#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAX = 10000000+10;
const int inf = 0x3f3f3f3f;
struct edge{
unsigned int l,r;
}t[MAX];
int main()
{
int T,n;
unsigned int a, b, c, d;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d%d%d%d",&n,&t[1].l,&t[1].r,&a,&b,&c,&d);
for(int i = 2; i <= n ; i++){
t[i].l = t[i-1].l*a + b;
t[i].r = t[i-1].r*c + d;
}
for(int i = 1; i <= n ;i++){
if(t[i].l > t[i].r)
swap(t[i].l,t[i].r);
}
unsigned int min1 = 4294967295UL,max1 = 0;
for(int i = 1; i <= n ; i++){
if(t[i].r < min1)
min1 = t[i].r;
if(t[i].l > max1)
max1 = t[i].l;
}
if(min1 > max1){
printf("NO\n");
continue;
}
int flag = 0;
for(int i = 1; i <= n ; i++){
if(t[i].l > min1 && t[i].r < max1){
printf("YES\n");
flag = 1;
continue;
}
}
if(!flag)
printf("NO\n");
}
return 0;
}