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

int int_cmp(const void *va, const void *vb)
{
	int *ia = (int*)va, *ib = (int*)vb;
	return *ib - *ia;
}

int main()
{
	int L,S,M,D,B;
	int SF[2000], MF[2000], DF[2000], BF[2000];
	
	int i,j,k,l,ii,jj,kk,ll,b2 = 0,b3 = 0,b4 = 0;

	long int count;
	while(1)
	{
		count = 0;	
			
		scanf("%d %d %d %d %d", &L, &S, &M, &D, &B);
		
		if(L == 0 && S == 0 && M == 0 && D == 0 && B == 0) break;
		
		for (i = 0; i < S; i++)
		{
			scanf("%d", &SF[i]);
		}

		for (i = 0; i < M; i++)
		{
			scanf("%d", &MF[i]);
		}

		for (i = 0; i < D; i++)
		{
			scanf("%d", &DF[i]);
		}
		
		for (i = 0; i < B; i++)
		{
			scanf("%d", &BF[i]);
		}

		qsort(SF, S, sizeof(int), int_cmp);
		qsort(MF, M, sizeof(int), int_cmp);
		qsort(DF, D, sizeof(int), int_cmp);
		qsort(BF, B, sizeof(int), int_cmp);
		
		b2 = 0;
		for (i = 0; i < S; ++i) //using b2
		{
			if (b2 == 1)
			{
				count  += (S - i) * S * D * B;
				break;
			}

			ii = SF[i];
			//if (ii > L) break;
			
			b3 = 0;
			for (j = 0; j < M; ++j) //using: b3      setting:b2
			{
				if (b3 == 1)
				{
					count  += (M - j) * D * B;
					if (j == 0) b2 = 1;
					break;
				}

				jj = ii + MF[j];
				//if (jj > L) break;

				b4 = 0;
				for (k = 0; k < D; ++k) //using: b4    setting b3
				{
					if (b4 == 1)
					{
						if (k == 0) b3 = 1;
						count += (D - k) * B;
						break;		
					}
					
					kk = jj + DF[k];

					for (l = 0; l < B; ++l) //setting: b4
					{
						ll = kk + BF[l];
						if (ll > L) continue;

						if (l == 0) b4 = 1;
						count += B - l; 
						break;
					}
				}
			}		
		}

		printf("%ld\n",count);
	}
	
	return 0;
}