#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long LL;

const int MAXN=4E5+10;
const int MAXM=4E5+10;

LL pm(LL a,LL n,LL m)
{
	LL r=1;
	for (;n;n>>=1,a=a*a%m)
		if (n&1) r=r*a%m;
	return r;
}

const LL P=2013265921,g=31;

void ntt(LL *a,size_t n,bool inv=false){
    // inv为true时表示逆运算;
    LL w=1,d=pm(g,(P-1)/n,P),t;
    size_t i,j,c,s;
    if(inv){
        for(i=1,j=n-1;i<j;swap(a[i++],a[j--]));
        for(t=pm(n,P-2,P),i=0;i<n;++i)a[i]=a[i]*t%P;
    }
    for(s=n>>1;s;s>>=w=1,d=d*d%P)
    for(c=0;c<s;++c,w=w*d%P)
    for(i=c;i<n;i+=s<<1){
        a[i|s]=(a[i]+P-(t=a[i|s]))*w%P;
        a[i]=(a[i]+t)%P;
    }
    for(i=1;i<n;++i){
        for(j=0,s=i,c=n>>1;c;c>>=1,s>>=1)j=j<<1|s&1;
        if(i<j)swap(a[i],a[j]);
    }
}

int main()
{
	int n,m,i,x,max,l,total;
	LL a[MAXN];
	scanf("%d",&n);
	max=0;
	memset(a,0,sizeof(a));
	for (i=0;i<n;i++)
	{
		scanf("%d",&x);
		if (x>max) max=x;
		a[x]=1;
	}
	a[0]=1;
	for (l=2;l<max*2+1;l<<=1);
	ntt(a,l);
	for (i=0;i<l;i++)
	a[i]=a[i]*a[i]%P;
	ntt(a,l,true);
	scanf("%d",&m);
	total=0;
	for (i=0;i<m;i++)
	{
		scanf("%d",&x);
		if (a[x]) total++;
	}
	printf("%d\n",total);
}
