#include <cstdio>
#include <cstring>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int main(){
	long long max;
	long long count[4];
	while(true){
		vector<long long> items[4];
		scanf("%lld%lld%lld%lld%lld", &max, count, count+1, count+2, count+3);
		if(max == 0 &&
			count[0] == 0 &&
			count[1] == 0 &&
			count[2] == 0 &&
			count[3] == 0){
			break;
		}
		long long tmp;
		for(long long q = 0; q < 4; ++q){
			for(long long w = 0; w < count[q]; ++w){
				scanf("%lld", &tmp);
				items[q].push_back(tmp);
			}
			sort(items[q].begin(), items[q].end());
		}
		long long min = 0;
		for(long long q = 0; q < 4; ++q){
			min += items[q][0];
		}
		for(long long q = 0; q < 4; ++q){
			tmp = items[q][0];
			for(long long w = 0; w < count[q]; ++w){
				items[q][w] -= tmp;
			}
		}
		long long aarr[2002];
		long long barr[2002];
		memset(barr, 0, 2002 * sizeof(long long));
		long long *a = aarr;
		long long *b = barr;
		for(long long w = 0; w < count[0]; ++w){
			b[min+items[0][w]] += 1;
		}
		for(long long q = 1; q < 4; ++q){
			long long *t;
			t = a;
			a = b;
			b = t;
			memset(b, 0, 2002 * sizeof(long long));
			for(long long r = 0; r < 2002; ++r){
				if(a[r] != 0){
					for(long long w = 0; w < count[q]; ++w){
						if(r + items[q][w] < 2002){
							b[r + items[q][w]] += a[r];
						}
					}
				}
			}
		}
		long long sum = 0;
		for(long long r = 0; r <= max; ++r){
			sum += b[r];
		}
		printf("%lld\n", sum);
	}
  
  return 0;
}