#include <iostream>
#include <cstdio>
#include <bitset>
#define NR2 10
#define NR 276997
#define MOD1 666013
#define MOD2 1000003
#define MOD3 826663
#define MOD4 123457
#define MOD5 797593
#define MOD6 959473
#define MOD7 1309999
#define MOD8 1111151
#define MOD9 150001
#define MOD10 300007
#define limit 100000
#define Next (++position == limit)?(fread(ch, 1, limit, stdin), position = 0):0
using namespace std;
int position;
char ch[limit];
bitset <MOD1> H1;
bitset <MOD2> H2;
bitset <MOD3> H3;
bitset <MOD4> H4;
bitset <MOD5> H5;
//bitset <MOD6> H6;
//bitset <MOD7> H7;
//bitset <MOD8> H8;
//bitset <MOD9> H9;
//bitset <MOD10> H10;
inline void Read(long long &x)
{
for (; ch[position] < '0' || ch[position] > '9'; Next);
for (x = 0; '0' <= ch[position] && ch[position] <= '9'; x = x*10 + ch[position] - '0', Next);
}
inline bool Good(const long long x)
{
//if (!H1[x&MOD1] || !H2[x%MOD2] || !H3[x%MOD3] || !H4[x%MOD4] || !H5[x%MOD5] || !H6[x%MOD6] || !H7[x%MOD7] || !H8[x%MOD8] || !H9[x%MOD9] || !H10[x%MOD10])
if (!H1[x%MOD1] || !H2[x%MOD2] || !H3[x%MOD3] || !H4[x%MOD4] || !H5[x%MOD5])
return false;
return true;
}
inline bool Good2(const long long nrp)
{
long long nr = nrp;
if (nr == 0)
return false;
nr /= (nr & (-nr));
for (; (nr / 15) * 15 == nr; nr /= 15);
for (; (nr / 3) * 3 == nr; nr /= 3);
for (; (nr / 5) * 5 == nr; nr /= 5);
for (; (nr / 7) * 7 == nr; nr /= 7);
for (; (nr / 11) * 11 == nr; nr /= 11);
if (nr == 1LL)
return true;
return false;
}
int main()
{
freopen("dtcsu.in", "r", stdin);
for (int i = 1; i<=NR; ++i)
{
long long x;
Read(x);
//if (x % 2LL == 0)
// x /= (x & (-x));
H1[x%MOD1] = true;
H2[x%MOD2] = true;
H3[x%MOD3] = true;
H4[x%MOD4] = true;
H5[x%MOD5] = true;
}
long long QL;
int Q;
Read(QL);
Q = (int)QL;
int answer = 0;
while (Q--)
{
long long x;
Read(x);
//x /= x &(-x);
if (Good(x))
if (Good2(x))
++answer;
}
FILE *g = fopen("dtcsu.out", "w");
fprintf(g, "%d\n", answer);
fclose(g);
return 0;
}