#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,vector(3)); rep(i,0,3)rep(j,0,n)cin >> a[j][i]; int maxsize=0; rep(i,0,n){ sort(a[i].begin(),a[i].end()); maxsize+=a[i][2]-a[i][0]; } vector dp(maxsize+1); dp[0]=true; deque Q; int ans=1; int m=0; rep(i,0,n){ int x=a[i][1]-a[i][0],y=a[i][2]-a[i][0]; rep(j,m+1,m+y+1)Q.push_back(j); deque R; m+=y; while(Q.size()){ auto j=Q.back();Q.pop_back(); if(!dp[j]){ if(j-x>=0 && dp[j-x])dp[j]=true; if(j-y>=0 && dp[j-y])dp[j]=true; if(dp[j])ans++; else R.push_front(j); } } swap(Q,R); cout << ans << "\n"; } }