#include<bits/stdc++.h>
using namespace std;
int n,cnt,ans=0,val;
struct eage{
int to,w,next;
}e[40000];
int head[20000];
void add(int u,int v,int w){
e[++cnt].to=v;
e[cnt].w=w;
e[cnt].next=head[u];
head[u]=cnt;
}
int dfs(int x,int fa,int k){
int sum=0,a;
for(int i=head[x];i;i=e[i].next){
if(e[i].to==fa) continue;
if(e[i].w>=val) return -1;
if(e[i].w>=k){sum++;k=val;}
a=dfs(e[i].to,x,k-e[i].w);
if(a==-1) return -1;
sum+=a;
}
return sum;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1,k,v,w;i<=n;i++){
cin>>k;
for(int j=1;j<=k;j++){
cin>>v>>w;
add(i,v,w);
}
}
cin>>val;
ans=dfs(1,0,val);
if(ans==-1) cout<<"No solution."<<endl;
else cout<<ans<<endl;
return 0;
}