#include <cstdlib>
#include <cstdio>
#include <cstring>

using namespace std;

int cmp (const void *a, const void *b) {
	return *(int*)a - *(int*)b;
}

int main () {
	int bound, n1, n2, n3, n4;
	int x1[3000];
	int x2[3000];
	int x3[3000];
	int x4[3000];

	int value1[4000000];
	int value2[4000000];


	for ( ; ;) {
		scanf ("%d%d%d%d%d", &bound, &n1, &n2, &n3, &n4);
		if (bound == 0)
			break;
	
		for (int i = 0; i < n1; i++)
			scanf ("%d", &x1[i]);

		for (int i = 0; i < n2; i++)
			scanf ("%d", &x2[i]);

		for (int i = 0; i < n3; i++)
			scanf ("%d", &x3[i]);

		for (int i = 0; i < n4; i++)
			scanf ("%d", &x4[i]);


		for (int i = 0; i < n1; i++)
			for (int j = 0; j < n2; j++)
				value1[i * n2 + j] = x1[i] + x2[j];

		for (int i = 0; i < n3; i++)
			for (int j = 0; j < n4; j++)
				value2[i * n4 + j] = x3[i] + x4[j];

		n1 = n1 * n2;
		n2 = n3 * n4;

		/*
		for (int i = 0; i < n1; i++)
			printf ("%d ", value1[i]);
		printf ("\n");

		for (int i = 0; i < n2; i++)
			printf ("%d ", value2[i]);
		printf ("\n");
		*/

		qsort (value1, n1, sizeof(int), cmp);
		qsort (value2, n2, sizeof(int), cmp);

		long long out = 0;

		for (int i = 0; i < n1; i++) {
			int index = n2 - 1;
			for ( ; ;) {
				if (value1[i] + value2[index] <= bound)
					break;
				
				index--;
				if (index < 0) {
					printf ("%lld\n", out);
					goto next;
				}
			
			}
			out += index + 1;
		}
		printf ("%lld\n", out);
		next:;
	}
	return 0;
}