#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);
		}
		//cout << "kokot" << endl;

		for(i4 = 0; i4 < nums[3]; i4++) {
			for(i3 = 0; i3 < nums[2]; i3++) {
				for(i2 = 0; i2 < nums[1]; i2++) {
					for(i1 = 0; i1 < nums[0]; i1++) {
						cur_price = lunches[0][i1] + lunches[1][i2] + lunches[2][i3] + lunches[3][i4];

						if(cur_price > max_price) {
							//nums[0] = i1;
							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;
}