from sys import stdin input = stdin.readline from math import gcd, lcm def inverse(n, d, MOD): return n * pow(d, -1, MOD) % MOD def rangeModCount(l, r, c, m, k = 0): if l == r: return c if l%m == k else 0 if c == 1: return -1 if l > r: l, r = r, l if (r-l)%(c-1) != 0: return -1 d = (r-l)//(c-1) GCD = gcd(m, d) if l%GCD != k%GCD: return 0 ng = (k-l)//GCD mg = m//GCD dg = d//GCD f = inverse(ng, dg, mg) if c <= f: return 0 else: return (c-f-1)//mg+1 for _ in range(int(input())): M, A, B, K = map(int, input().split()) if A < K: print(0) continue if A == K: cntA = M//A cntB = M//B LCM = lcm(A, B) ans = (cntA-1)-cntB+M//LCM if M-(M-A)%A < M-(M-B)%B: ans += 1 print(ans) continue l, r = K, A-K ans = rangeModCount(B, M-(M-B)%B, (M-(M-B)%B)//B, A, l)+rangeModCount(B, M-(M-B)%B, (M-(M-B)%B)//B, A, r) if M-(M-A)%A < M-(M-B)%B and (M-(M-B)%B)%A == r: ans -= 1 print(ans)