#include <iostream>
#include <string>
#include <sstream>

using namespace std;

        int poleS[2000] = {};
        int poleM[2000] = {};
        int poleD[2000] = {};
        int poleB[2000] = {};
int l, s, m, d, b;
void load()
{
    for(int i = 0; i < s; i++)
    cin >> poleS[i];

    for(int i = 0; i < m; i++)
    cin >> poleM[i];

    for(int i = 0; i < d; i++)
    cin >> poleD[i];

    for(int i = 0; i < b; i++)
    cin >> poleB[i];
}

/*
unsigned long long counter = 0;

    while (cin >> l >> s >> m >> d >> b)
    {
        if (l == 0 && s == 0 && m == 0 && d == 0 && b == 0) break;

        load();
        for(int i_s = 0; i_s < l; i_s++)
        for(int i_m = 0; i_m < l; i_m++)
        for(int i_d = 0; i_d < l; i_d++)
        for(int i_b = 0; i_b < l; i_b++)
        {
            if((poleS[i_s] +
               poleM[i_m] +
               poleD[i_d] +
               poleB[i_b]  )<= l)
               counter++;
        }
        cout << counter << endl;
    }
*/

int main()
{
    uint64_t counter = 0;

    while (cin >> l >> s >> m >> d >> b)
    {
        counter = 0;
        if (l == 0 && s == 0 && m == 0 && d == 0 && b == 0) break;

        load();
        for(int i_s = 0; i_s < s; i_s++)
        for(int i_m = 0; i_m < m; i_m++)
        for(int i_d = 0; i_d < d; i_d++)
        for(int i_b = 0; i_b < b; i_b++)
        {
            if((poleS[i_s] +
               poleM[i_m] +
               poleD[i_d] +
               poleB[i_b]  )<= l)
               counter++;
        }
        cout << counter << endl;
    }

    return 0;
}