#include <stdio.h>
#define REP(i, n) for(int (i)=0;(i)<(n);(i)++)
using namespace std;
#include <map>
#include <algorithm>
#define mp make_pair
#include <string.h>
char str[111111];
int v[4];
int L;
long long P[2222][4];
map< pair<int,int> , long long> dp;

long long solve(int l, int p) {
	if(p < 0 && l >= 0)
		return 1;
	if(p < 0 || l < 0)
		return 0;
	if(dp.find(mp(l, p)) != dp.end())
		return dp[mp(l, p)];
	long long ans = 0;
	for(int i = 0; i < v[p]; i++) {
		ans += solve(l-P[i][p], p-1);
	}
	return dp[mp(l, p)]=ans;
}

int main() {
	while(scanf("%d%d%d%d%d", &L, &v[0], &v[1], &v[2], &v[3]) == 5) {
		dp.clear();
		if(L == 0)
			break;
		REP(i, 4) {
			REP(j, v[i])
				scanf("%lld", &P[j][i]);
		}
		printf("%lld\n", solve(L, 3));		
	}
	return 0;
}