//----------//
// FairoozR //
//----------//
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fast_in_out ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ln "\n"
const double EPS = (double) 1e-9;
const double pi = acos(-1);
const int mod = 1000000007;
const int N = (int) 1e5;
const int M = (int) 1e2;
int arr[M + 1];
bool isPrime[N + 1];
vector <int> primes;
void sieve()
{
for(int i = 0; i <= N; i++)
{
isPrime[i] = true;
}
isPrime[0] = isPrime[1] = false;
for(int i = 0; i * i <= N; i++)
{
if(isPrime[i])
{
for(int j = i * i; j <= N; j += i)
{
isPrime[j] = false;
}
}
}
for(int i = 0; i <= N; i++)
{
if(isPrime[i])
{
primes.push_back(i);
}
}
}
int prime_count(int n)
{
int cnt = 0, s = primes.size();
for(int i = 0; i < s; i++)
{
int p = primes[i];
if((ll) p * p > n)
{
break;
}
if(n % p == 0)
{
cnt++;
while(n % p == 0)
{
n /= p;
}
}
}
if(n > 1)
{
cnt++;
}
return cnt;
}
int find_largest_subset(int n, int k)
{
int mx = 0;
for(int i = 0; i < n; i++)
{
int cnt = 0;
for(int j = 0; j < n; j++)
{
int temp = arr[i] - arr[j] ;
if(temp >= 0 && temp <= k)
{
cnt++;
}
}
mx = max(mx, cnt);
}
return mx;
}
int main()
{
fast_in_out;
sieve();
int test;
cin >> test;
for(int t = 1; t <= test; t++)
{
cout << "Case " << t << ":" << ln;
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++)
{
int x;
cin >> x;
arr[i] = prime_count(x);
}
for(int i = 1; i <= k; i++)
{
cout << find_largest_subset(n, i) << ln;
}
}
return 0;
}
Ly8tLS0tLS0tLS0tLy8KLy8gRmFpcm9velIgLy8KLy8tLS0tLS0tLS0tLy8KCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZhc3RfaW5fb3V0ICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTtjaW4udGllKDApO2NvdXQudGllKDApOwojZGVmaW5lIGxuICJcbiIKCmNvbnN0IGRvdWJsZSBFUFMgPSAoZG91YmxlKSAxZS05Owpjb25zdCBkb3VibGUgcGkgPSBhY29zKC0xKTsKY29uc3QgaW50IG1vZCA9IDEwMDAwMDAwMDc7CmNvbnN0IGludCBOID0gKGludCkgMWU1Owpjb25zdCBpbnQgTSA9IChpbnQpIDFlMjsKaW50IGFycltNICsgMV07CmJvb2wgaXNQcmltZVtOICsgMV07CnZlY3RvciA8aW50PiBwcmltZXM7Cgp2b2lkIHNpZXZlKCkKewogICAgZm9yKGludCBpID0gMDsgaSA8PSBOOyBpKyspCiAgICB7CiAgICAgICAgaXNQcmltZVtpXSA9IHRydWU7CiAgICB9CiAgICBpc1ByaW1lWzBdID0gaXNQcmltZVsxXSA9IGZhbHNlOwogICAgZm9yKGludCBpID0gMDsgaSAqIGkgPD0gTjsgaSsrKQogICAgewogICAgICAgIGlmKGlzUHJpbWVbaV0pCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IGogPSBpICogaTsgaiA8PSBOOyBqICs9IGkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlzUHJpbWVbal0gPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gTjsgaSsrKQogICAgewogICAgICAgIGlmKGlzUHJpbWVbaV0pCiAgICAgICAgewogICAgICAgICAgICBwcmltZXMucHVzaF9iYWNrKGkpOwogICAgICAgIH0KICAgIH0KfQoKaW50IHByaW1lX2NvdW50KGludCBuKQp7CiAgICBpbnQgY250ID0gMCwgcyA9IHByaW1lcy5zaXplKCk7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgczsgaSsrKQogICAgewogICAgICAgIGludCAgcCA9IHByaW1lc1tpXTsKICAgICAgICBpZigobGwpIHAgKiBwID4gbikKICAgICAgICB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZihuICUgcCA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIHdoaWxlKG4gJSBwID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG4gLz0gcDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKG4gPiAxKQogICAgewogICAgICAgIGNudCsrOwogICAgfQogICAgcmV0dXJuIGNudDsKfQoKCmludCBmaW5kX2xhcmdlc3Rfc3Vic2V0KGludCBuLCBpbnQgaykKewogICAgaW50IG14ID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IGNudCA9IDA7CiAgICAgICAgZm9yKGludCBqID0gMDsgaiA8IG47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGludCB0ZW1wID0gYXJyW2ldIC0gYXJyW2pdIDsKICAgICAgICAgICAgaWYodGVtcCA+PSAwICYmIHRlbXAgPD0gaykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbXggPSBtYXgobXgsIGNudCk7CiAgICB9CiAgICByZXR1cm4gbXg7Cn0KCgppbnQgbWFpbigpCnsKICAgIGZhc3RfaW5fb3V0OwogICAgc2lldmUoKTsKICAgIGludCB0ZXN0OwogICAgY2luID4+IHRlc3Q7CiAgICBmb3IoaW50IHQgPSAxOyB0IDw9IHRlc3Q7IHQrKykKICAgIHsKICAgICAgICBjb3V0IDw8ICJDYXNlICIgPDwgdCA8PCAiOiIgPDwgbG47CiAgICAgICAgaW50IG4sIGs7CiAgICAgICAgY2luID4+IG4gPj4gazsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHg7CiAgICAgICAgICAgIGNpbiA+PiB4OwogICAgICAgICAgICBhcnJbaV0gPSBwcmltZV9jb3VudCh4KTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8IGZpbmRfbGFyZ2VzdF9zdWJzZXQobiwgaSkgPDwgbG47CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0KCgo=