#include <stdio.h>
#include <stdlib.h>

int comp(const void* a, const void* b)
{
    int arg1 = *(const int*)a;
    int arg2 = *(const int*)b;
 
    if (arg1 < arg2) return -1;
    if (arg1 > arg2) return 1;
    return 0;

}
int s[2000],m[2000],d[2000],b[2000];

int main()
{
long long L,S,M,D,B;
long long i,j,k,l;
long long sum = 0;
while(1){
scanf("%Ld %Ld %Ld %Ld %Ld",&L,&S,&M,&D,&B);
if ((L == 0) && (S == 0) && (M == 0) && (D == 0) && (B == 0)) return 0;
for (i = 0; i<S;i++){
scanf("%d",&s[i]);
}
for (i = 0; i<M;i++){
scanf("%d",&m[i]);
}
for (i = 0; i<D;i++){
scanf("%d",&d[i]);
}
for (i = 0; i<B;i++){
scanf("%d",&b[i]);
}
sum=0;
qsort(s,S,sizeof(int),comp);
qsort(m,M,sizeof(int),comp);
qsort(d,D,sizeof(int),comp);
qsort(b,B,sizeof(int),comp);
long long  s1,s2,sp,sp2,sp3;
for (i = 0; i<S;i++){
if (s[i] >= L) break;
sp=0;
if ((i != 0)&&(s[i]==s[i-1])){
sum +=sp;
}
for (j = 0; j<M;j++){
s1 = s[i] + m[j];
if (s1 >= L) break;
sp2=0;
if ((j != 0)&&(m[j]==m[j-1])){
sum +=sp2;
}
for (k = 0; k<D;k++){
s2 = s1 + d[k];
if ((s2) >= L) break;
sp3 = 0;
if ((k != 0)&&(d[k]==d[k-1])){
sum +=sp3;
}
for (l = 0; l<B;l++){
if((s[i] + m[j] + d[k] + b[l])<=L){
sum++;
sp++;
sp2++;
sp3++;
}
else
break;

}

}

}

}


printf("%Ld\n",sum);
}






return 0;

}