#include <cstdlib>
#include <cstdio>

static int cmpint(const void *p1, const void *p2) {
	return *(int *) p1 - *(int *) p2;
}

int main() {
	int i, L, S, M, D, B;
	long long int res;
	int *s, *m, *d, *b;

	while(scanf("%d%d%d%d%d", &L, &S, &M, &D, &B) == 5 && !(L == 0 && S == 0 && M == 0 && D == 0 && B == 0)) {
		s = new int[S];m = new int[M];d = new int[D];b = new int[B];
		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]);}

		qsort(s, S, sizeof(int), cmpint);
		qsort(m, M, sizeof(int), cmpint);
		qsort(d, D, sizeof(int), cmpint);
		qsort(b, B, sizeof(int), cmpint);

		int pa,pb,pc,pd;
		res = 0;
		pa = 0;
		for(;pa<S;pa++) {
			if( s[pa] > L ) break;
			pb = pc = pd = 0;

				for(;pb<M;pb++) {
					if( s[pa] + m[pb] > L ) break;
						pc = pd = 0;
					
					for(;pc<D;pc++) {
						if( s[pa] + m[pb] + d[pc] > L ) break;
							pd = 0;
						for(;pd<B;pd++) {
							if( s[pa] + m[pb] + d[pc] + b[pd] > L ) break;
							res++;						
						}
					}				
				}
		}
				

		printf("%lld\n", res);

		delete [] s;
		delete [] m;
		delete [] d;
		delete [] b;
	}

	return 0;
}