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

int main(){
	
	long **menu = (long**)malloc(sizeof(long*) * 5);
	menu[0] = (long*)malloc(sizeof(long) * 5);
	long i, j;
	for(i = 0; i < 5; i++){
		scanf("%ld", &menu[0][i]);
	}
	/*
	for(i = 0; i < 5; i++){
		printf("%d ", menu[0][i]);
	}
	* */
	//printf("\n");
	while(menu[0][0] != 0){
		for(i = 1; i < 5; i++){
			menu[i] = (long*)malloc(sizeof(long) * menu[0][i]);
			long j;
			for(j = 0; j < menu[0][i]; j++){
				scanf("%ld", &menu[i][j]);
				//printf("%d ", menu[i][j]);
			}
			//printf("\n");
			scanf("\n");
		}
		//printf("\n");
		long k;
		for(i = 1; i < 5; i++){
			for(j = 1; j < menu[0][i]; j++){
				k = j;
				while(k > 0 && menu[i][k] < menu[i][k-1]){
					long pom = menu[i][k-1];
					menu[i][k-1] = menu[i][k];
					menu[i][k] = pom;
					k--;
				}
			}
		}
		/*
		 * vypis zoradenych prvkov
		for(i = 1; i < 5; i++){
			for(j = 0; j < menu[0][i]; j++){
				printf("%ld ", menu[i][j]);
			}
			printf("\n");
		}
		printf("\n");
		*/
		//int cont[4] = {1, 1, 1, 1};
		int cont[4] = {1, 1, 1, 1};
		long s, m, d, b, cnt;
		cnt = 0;
		for(s = 0; s < menu[0][1]; s++){
			cont[2] = 1;
			if(!cont[1]){
				break;
			}
			for(m = 0; m < menu[0][2]; m++){
				cont[3] = 1;
				if(!cont[2]){
					break;
				}
				for(d = 0; d < menu[0][3]; d++){
					if(!cont[3]){
						break;
					}
					for(b = 0; b < menu[0][4]; b++){
						
						if(menu[1][s] + menu[2][m] + menu[3][d] + menu[4][b] <= menu[0][0]){
							cnt++;
							//printf("s: %ld m: %ld d: %ld b: %ld\n", menu[1][s], menu[2][m], menu[3][d], menu[4][b]);
						}
						else{
							if(b == 0){
								cont[3] = 0;
							}
							if(b + d == 0){
								cont[2] = 0;
							}
							if(b + d + m == 0){
								cont[1] = 0;
							}
							break;
						}
					}
				}
			}
		}
		//printf("\nwilly can afford: %d menu variations\n", cnt);
		printf("%ld\n", cnt);
		
		
		
		
		//koniec spracovania inputu - nacitaj hlavicku dalsieho
		//printf("citam dalsi vstup\n");
		int whatever;
		for(whatever = 1; whatever < 5; whatever++){
			free(menu[whatever]);
			//printf("uvolnujem %ld pole", i);
		}
		for(whatever = 0; whatever < 5; whatever++){
			scanf("%ld", &menu[0][whatever]);
			//printf("%ld ", menu[0][whatever]);
		}
	}
	return 0;
}