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

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

int main(void) {
	int l = -1, s, m, d, b;
	while(scanf("%d %d %d %d %d", &l, &s, &m, &d, &b) == 5){
		if(l == 0) break;
		int i, j, k, n;
		int soups[s];
		int mains[m];
		int desserts[d];
		int beverages[b];
		int min_main = 200000000, min_desserts = 200000000, min_beverages = 200000000;
		for (i = 0; i < s; ++i) {
			scanf("%d", &soups[i]);
		}
		for (i = 0; i < m; ++i) {
			scanf("%d", &mains[i]);
			if (mains[i] < min_main) min_main = mains[i];
		}
		for (i = 0; i < d; ++i) {
			scanf("%d", &desserts[i]);
			if (desserts[i] < min_desserts) min_desserts = desserts[i];
		}
		for (i = 0; i < b; ++i) {
			scanf("%d", &beverages[i]);
			if (beverages[i] < min_beverages) min_beverages = beverages[i];
		}

		qsort(soups, s, sizeof(int), cmp);
		qsort(mains, m, sizeof(int), cmp);
		qsort(desserts, d, sizeof(int), cmp);
		qsort(beverages, b, sizeof(int), cmp);

		int curr;
		long c = 0;
		for (i = 0; i < s; ++i) {
			if (soups[i] + min_main + min_desserts + min_beverages > l) break;
			curr = soups[i];
			for (j = 0; j < m; ++j) {
				if (curr + mains[j] + min_desserts + min_beverages > l) break;
				curr += mains[j];
				for (k = 0; k < d; ++k) {
					if (curr + desserts[k] + min_beverages > l) break;
					curr += desserts[k];
					for (n = 0; n < b; ++n) {
						if (curr + beverages[n] <= l) c++;
					}
					curr -= desserts[k];
				}
				curr -= mains[j];
			}
		}

		printf("%ld\n", c);

	}
	return EXIT_SUCCESS;
}