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

int main(){
	
	long **menu = (long**)malloc(sizeof(long*) * 5);
	menu[0] = (long*)malloc(sizeof(long) * 5);
	long i;
	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");
		}
		//printf("\n");
		long s, m, d, b, cnt;
		cnt = 0;
		for(s = 0; s < menu[0][1]; s++){
			for(m = 0; m < menu[0][2]; m++){
				for(d = 0; d < menu[0][3]; d++){
					for(b = 0; b < menu[0][4]; b++){
						long price = menu[1][s] + menu[2][m] + menu[3][d] + menu[4][b];
						//printf("menu price: %d\n", price);
						if(price <= menu[0][0]){
							cnt++;
						}
					}
				}
			}
		}
		//printf("\nwilly can afford: %d menu variations\n", cnt);
		printf("%ld\n", cnt);
		
		
		
		
		//koniec spracovania inputu - nacitaj hlavicku dalsieho
		for(i = 0; i < 5; i++){
		scanf("%ld", &menu[0][i]);
		//printf("%d ", menu[0][i]);
		}
		//printf("\n");
	}
	return 0;
}