#include<bits/stdc++.h>
using namespace std;
int n,m;
int c[2000001];
int k[2000001];
bool s[2000001];
vector<int> g[2000001];
void dfs(int u,int fa){
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
dfs(v,u);
}
if(k[fa]-1+k[u]+c[u]+c[fa]<=m&&u!=0){
s[u]=true;
k[fa]+=(k[u]-1);
c[fa]+=c[u];
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&c[i]);
for(int i=0;i<n;i++){
scanf("%d",&k[i]);
for(int j=1;j<=k[i];j++){
int num;
scanf("%d",&num);
g[i].push_back(num);
}
}
dfs(0,-1);
int ans=0;
for(int i=1;i<n;i++)
if(s[i]) ans++;
printf("%d\n",ans);
return 0;
}