#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;

typedef long long ll;

struct comb_t { int sum; ll count; };

int values[4][2000];
comb_t combinations[2][4000005];
comb_t prefix_sums[4000005];

bool operator<(const comb_t &a, const comb_t &b)
{
    return a.sum < b.sum;
}

int main(void)
{
    int l;
    int a[4];
    while (scanf("%d%d%d%d%d", &l, &a[0], &a[1], &a[2], &a[3]) == 5 && l != 0) {
        for (int k = 0; k < 4; k++) {
            for (int i = 0; i < a[k]; i++) {
                scanf("%d", &values[k][i]);
            }
        }
        map<int, int> nsum[2];
        for (int i = 0; i < a[0]; i++) {
            for (int j = 0; j < a[1]; j++) {
                int sum = values[0][i] + values[1][j];
                if (nsum[0].find(sum) == nsum[0].end()) {
                    nsum[0][sum] = 0;
                }
                nsum[0][sum]++;
            }
        }
        for (int i = 0; i < a[2]; i++) {
            for (int j = 0; j < a[3]; j++) {
                int sum = values[2][i] + values[3][j];
                if (nsum[1].find(sum) == nsum[1].end()) {
                    nsum[1][sum] = 0;
                }
                nsum[1][sum]++;
            }
        }
        int p[2];
        for (int k = 0; k < 2; k++) {
            p[k] = 0;
            for (map<int, int>::iterator it = nsum[k].begin(); it != nsum[k].end(); it++) {
                combinations[k][p[k]++] = (comb_t) { it->first, it->second };
            }
        }
        prefix_sums[0] = combinations[1][0];
        for (int i = 0; i < p[1]; i++) {
            prefix_sums[i] = (comb_t) { combinations[1][i].sum, combinations[1][i].count + prefix_sums[i-1].count };
        }
        ll result = 0;
        for (int a = 0; a < p[0]; a++) {
            comb_t first = combinations[0][a];
            comb_t *it = lower_bound(prefix_sums, prefix_sums + p[1], (comb_t) { l-first.sum+1, 0 });
            if (it == prefix_sums) {
                continue;
            }
            it--;
            comb_t second = *it;
            if (first.sum + second.sum > l) {
                continue;
            }
            result += first.count * second.count;
        }
        printf("%lld\n", result);
    }
    return 0;
}