#include <iostream>
#include <cstdio>
#include <sstream>
#include <vector>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <algorithm>
#include <set>
#include <cmath>

using namespace std;

int main()
{
    std::ios::sync_with_stdio(false);
    long long l, s, m, b , d;
    while(cin >> l >> s >> m >> d >> b) {
		if(l == s && s == m && m == d && d==b && b==0) {
			break;
		}
        vector<long long> vs(s), vm(m), vd(d), vb(b);
		for(long long i = 0; i<s; i++) {
			cin >> vs[i];
		}
		for(long long i = 0; i<m; i++) {
			cin >> vm[i];
		}
		for(long long i = 0; i<d; i++) {
			cin >> vd[i];
		}
		for(long long i = 0; i<b; i++) {
			cin >> vb[i];
		}
		vector<long long> v1;
		for(long long i = 0; i<s; i++) {
			for(long long j = 0; j<m; j++) {
				if(vs[i]+vm[j] <=l)
				v1.push_back(vs[i]+vm[j]);
			}
		}
		sort(v1.begin(), v1.end());
		vector<long long> v2;
		for(long long i = 0; i<d; i++) {
			for(long long j = 0; j<b; j++) {
				if(vd[i]+vb[j] <= l)
				v2.push_back(vd[i]+vb[j]);
			}
		}
		sort(v2.begin(), v2.end());
		long long sum = 0;
		for(long long i = 0; i<v1.size(); i++) {
			long long fnd = l - v1[i];
			long long hi = v2.size(), lo = 0, mid;
			while(hi-lo>1) {
				mid = (hi+lo)/2;
				if(v2[mid] > fnd) {
					hi = mid;
				}
				else {
					lo = mid;
				}
			}
			if (v2[lo] > fnd)
				lo--;
//			cout << lo+1 << "\n";
			sum += lo+1;
		}
		cout << sum << "\n";
    }
}