#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
int cnt, prime[maxn], mu[maxn], vis[maxn];
inline void input(int &x) {
char c;
x = 0;
while ((c = getchar()) < '0' || c > '9');
while ('0' <= c && c <= '9') x = x * 10 + (c-'0'), c = getchar();
}
void init() {
int N = maxn;
memset(prime, 0, sizeof(prime));
memset(mu, 0, sizeof(mu));
memset(vis, 0, sizeof(vis));
mu[1] = 1;
cnt = 0;
for (int i = 2; i < N; i++) {
if (!vis[i]) {
prime[cnt++] = i;
mu[i] = -1;
}
for (int j = 0; j < cnt && i * prime[j] < N; j++) {
vis[i*prime[j]] = 1;
if (i % prime[j]) mu[i*prime[j]] = -mu[i];
else {
mu[i*prime[j]] = 0;
break;
}
}
}
}
int main() {
init();
int T, a, b, c, d, k;
input(T);
for (int kase = 1; kase <= T; kase++) {
input(a); input(b); input(c); input(d); input(k);
if (k == 0) { printf("Case %d: 0\n", kase); continue; }
ll ans1 = 0, ans2 = 0;
int n = b/k, m = d/k, t= min(n, m);
for (int i = 1; i <= t; i++) ans1 += (ll)mu[i]*(n/i)*(m/i);
for (int i = 1; i <= t; i++) ans2 += (ll)mu[i]*(t/i)*(t/i);
printf("Case %d: %lld\n", kase, ans1 - ans2/2);
}
return 0;
}