#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

#define lli long long int

void loadV ( lli S, vector<lli> & vS )
{
	for ( lli i = 0; i < S; i++ ) {
		lli x; cin >> x;
		vS.push_back( x );
	}
}

void merge ( vector<lli> & x, vector<lli> & y, vector<lli> & z, lli L )
{
	for ( size_t i = 0; i < x.size(); i++ ) {
		for ( size_t j = 0; j < y.size(); j++ ) {
			if ( x[ i ] + y[ j ] <= L ) {
				z.push_back( x[ i ] + y[ j ] );
			}
		}
	}
	sort(z.begin(), z.end());
}

int main ( void )
{
	lli L, S, M, D, B;
	
	while ( cin >> L >> S >> M >> D >> B && L != 0 )
	{
		lli sum = 0;
		vector<lli> vS, vM, vD, vB;
		loadV( S, vS );
		loadV( M, vM );
		loadV( D, vD );
		loadV( B, vB );
		
		vector<lli> F1, F2;
		merge( vS, vM, F1, L );
		merge( vD, vB, F2, L );
		
		lli i = F1.size() - 1, j = 0;
		while ( i >= 0 && F1[ i ] + F2[ j ] > L ) {
			i--;
		}
		j = F2.size() - 1;
		while ( j >= 0 && F1[ i ] + F2[ j ] > L ) {
			j--;
		}
		
		sum += (j + 1);
		while ( i > 0 && j < F2.size() ) {
			i--;
			
			while ( j < F2.size() - 1 && F1[ i ] + F2[ j + 1 ] <= L ) {
				j++;
			}
			
			sum += (j + 1);
		}
		
		cout << sum << endl;
	}
	
	return 0;
}