#include using namespace std; const int MAX_PR = 5e7; int C, plow, phigh, t; long long low, high; vector primes; void sieve() { bool comp[MAX_PR] = {0}; primes.push_back(0); for(int i=2; i hi) return -1; long long mid; if(t < p) { mid = max(lo, 1LL*p*t); return mid <= min(hi, 1LL*p*t + p-1) ? mid : -1; } while(lo < hi) { mid = (lo + hi) >> 1; if(cnt(mid, p) >= t) hi = mid; else lo = mid + 1; } return cnt(lo, p)==t ? lo : -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); sieve(); cin >> C; while(C--) { cin >> low >> high >> plow >> phigh >> t; long long ans = 0, L, R; for(int i=plow; i<=phigh; i++) { int p = primes[i]; L = findrange(p, low, high, t); if(L == -1) continue; R = min(high, p*(L/p) + p-1); ans += R - L + 1; low = R + 1; } cout << ans << "\n"; } return 0; }