import sys
def gcd(a,b):
if b==0:
return a
return gcd(b,a%b)
def lcm(a,b) :
return (a*b)/gcd(a,b)
t=int(input())
p=list();
for case in range(0,t):
n,m,a,d = map(int,sys.stdin.readline().split());
s=0
n=n-1
for i in range(1,32):
j=0
for h in range(4,-1,-1):
if i&(1<<h) :
p.insert(j,a+h*d)
j=j+1
if j==1 :
s+=(m/p[0]-n/p[0])
else :
z=lcm(p[0],p[1])
for k in range(2,j):
z=lcm(z,p[k])
if (j&1) :
s+=(m/z-n/z)
else:
s-=(m/z-n/z)
print(int(m-n-s+.5));
aW1wb3J0IHN5cwpkZWYgZ2NkKGEsYik6CiAgIGlmIGI9PTA6CiAgICAgIHJldHVybiBhCiAgIHJldHVybiBnY2QoYixhJWIpCmRlZiBsY20oYSxiKSA6CiAgIHJldHVybiAoYSpiKS9nY2QoYSxiKSAKdD1pbnQoaW5wdXQoKSkKcD1saXN0KCk7CmZvciBjYXNlIGluIHJhbmdlKDAsdCk6CiAgICAgIG4sbSxhLGQgPSBtYXAoaW50LHN5cy5zdGRpbi5yZWFkbGluZSgpLnNwbGl0KCkpOwogICAgICBzPTAKICAgICAgbj1uLTEKICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwzMik6CiAgICAgICAgICBqPTAKICAgICAgICAgIGZvciBoIGluIHJhbmdlKDQsLTEsLTEpOiAgICAgICAgIAogICAgICAgICAgICAgIGlmIGkmKDE8PGgpIDoKICAgICAgICAgICAgICAgICBwLmluc2VydChqLGEraCpkKQogICAgICAgICAgICAgICAgIGo9aisxCiAgICAgICAgICBpZiBqPT0xIDoKICAgICAgICAgICAgICAgICBzKz0obS9wWzBdLW4vcFswXSkKICAgICAgICAgIGVsc2UgOiAKICAgICAgICAgICAgICAgICAgej1sY20ocFswXSxwWzFdKQogICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSgyLGopOiAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICB6PWxjbSh6LHBba10pCiAgICAgICAgICAgICAgICAgIGlmIChqJjEpIDoKICAgICAgICAgICAgICAgICAgICAgICBzKz0obS96LW4veikKICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICBzLT0obS96LW4veikKICAgICAgcHJpbnQoaW50KG0tbi1zKy41KSk7Cg==