#include <iostream>
#include <stdlib.h>

using namespace std;

int my_cmp(const void* a, const void* b)
{
	int v1 = *((const int*)a);
	int v2 = *((const int*)b);
	if(v1 < v2) return -1;
	if(v1 > v2) return 1;
	return 0;
}

int main()
{
	int max_price, i, j, combs, cur_price = 0, i1, i2, i3, i4;
	int nums[4];
	int *lunches[4];

	while(1) {
		cin >> max_price >> nums[0] >> nums[1] >> nums[2] >> nums[3];

		if(max_price == 0 && nums[0] == 0)
			break;

		if(cin.eof())
			break;

		lunches[0] = new int[nums[0]];
		lunches[1] = new int[nums[1]];
		lunches[2] = new int[nums[2]];
		lunches[3] = new int[nums[3]];

		combs = 0;

		//cout << "kokot" << endl;
		for(j = 0; j < 4; j++) {
			for(i = 0; i < nums[j]; i++){
				cin >> lunches[j][i];
				//cout << lunches[j][i];
			}
			//cout << endl;
			qsort(lunches[j], nums[j], sizeof(int), my_cmp);
		}
		
		
		int f1;
		int f2;
		int f3;
		for(i4 = 0; i4 < nums[3]; i4++) {
			f1 = lunches[3][i4];
			
			if ( f1 > max_price){
				break;
			}

			for(i3 = 0; i3 < nums[2]; i3++) {

				f2 = f1 + lunches[2][i3];

				if ( f2 > max_price) {
					break;
				}

				for(i2 = 0; i2 < nums[1]; i2++) {

					f3 = f2 + lunches[1][i2];

					if ( f3 > max_price) {
						break;
					}

					for(i1 = 0; i1 < nums[0]; i1++) {
						cur_price = lunches[0][i1] + f3;

						if(cur_price > max_price) {
							break;
						}
						else
							combs++;
					}
					/*if(cur_price > max_price) {
						nums[1] = i2;
						break;
					}*/
				}
				/*if(cur_price > max_price) {
					nums[2] = i3;
					break;
				}*/
			}
			/*if(cur_price > max_price) {
				nums[3] = i4;
				break;
			}*/
		}

		cout << combs << endl;

		delete [] lunches[0];
		delete [] lunches[1];
		delete [] lunches[2];
		delete [] lunches[3];
	}
	return 0;
}