#include<stdio.h>
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
long long arr[102];
long long arr1[102];
int match[205];
bool visit[205];
vector<int>vec[205];
int dfs(int node)
{
int x=vec[node].size();
for(int i=0; i<x; i++)
{
int j=vec[node][i];
if(visit[j])
{
continue;
}
visit[j]=true;
if(match[j]<0 || dfs(match[j]))
{
match[j]=node;
return 1;
}
}
return 0;
}
int main()
{
long long x,test,i,j,n,m,cnt;
scanf("%lld",&test);
for(x=1; x<=test; x++)
{
scanf("%lld",&n);
for(i=1; i<=n; i++)
{
scanf("%lld",&arr[i]);
}
scanf("%lld",&m);
for(i=1; i<=m; i++)
{
scanf("%lld",&arr1[i]);
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(arr[i]==0 && arr1[j]==0)
{
vec[i].push_back(j);
continue;
}
if(arr[i]==0)
{
continue;
}
if(arr1[j]%arr[i]==0)
{
vec[i].push_back(j);
}
}
}
memset(match,-1,sizeof(match));
cnt=0;
for(i=1; i<=n; i++)
{
memset(visit,false,sizeof(visit));
if(dfs(i))
{
cnt++;
}
}
printf("Case %lld: %lld\n",x,cnt);
for(i=0;i<=n;i++)
{
vec[i].clear();
}
}
return 0;
}