#include <bits/stdc++.h>

using namespace std;

#define F(i,L,U) for((i)=(L);(i)<(U);(i)++)
#define FE(i,L,U) for((i)=(L);(i)<=(U);(i)++)

long L,nfood[4];

long food[4][3000];

// long memo[4][100000005];

map<long, long> maps[4];


long ways(int id, long rem){
  if (rem < 0) return 0;
  
  if (id == 4) return 1;
  
  
  map<long, long>::iterator got = maps[id].find(rem);
  if (got != maps[id].end()) return got->second;
  
//   if (memo[id][rem] != -1) return memo[id][rem];
  
  long sum = 0;
  
  int i;
  F(i,0,nfood[id]){
    sum += ways(id+1, rem - food[id][i]);
  }
  
//   return sum;
   return maps[id][rem] = sum;
}


int main(){
  int i, j;
  
  while(scanf("%ld %ld %ld %ld %ld", &L, &nfood[0],&nfood[1], &nfood[2], &nfood[3]), (L||nfood[0]||nfood[1]||nfood[2]||nfood[3])){
   
//     memset(memo, -1, sizeof memo);
    maps[0].clear();
     maps[1].clear();
      maps[2].clear();
       maps[3].clear();
    
    F(i,0,4){
	F(j,0,nfood[i]){
	  scanf("%ld", &food[i][j]);
	}
    }
    
    printf("%ld\n", ways(0,L));
  }

  return 0;
}

Diff to submission s463