#include using namespace std; #include using namespace atcoder; using mint = atcoder::static_modint<998244353>; // using mint = atcoder::static_modint<1000000007>; using ld = long double; using ll = long long; #define mp(a,b) make_pair(a,b) #define rep(i,s,n) for(int i=s; i<(int)n; i++) const vector dx{1,0,-1,0},dy{0,1,0,-1}; int main(){ int n,f;cin >> n >> f; vector a(n);rep(i,0,n)cin >> a[i]; vector b(n);rep(i,0,n)cin >> b[i]; vector c(n);rep(i,0,n)cin >> c[i]; vector dp(n*f+1); dp[0]=true; rep(i,0,n){ vector dp2(n*f+1); rep(j,0,n*f+1)if(dp[j]){ dp2[j+a[i]]=true; dp2[j+b[i]]=true; dp2[j+c[i]]=true; } swap(dp,dp2); cout << accumulate(dp.begin(),dp.end(),0) << "\n"; } }