#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e6 + 5;
struct Node{
int x, w;
};
int n, m, ans, v2[N];
vector<Node> v[N];
void dfs(int x, int fa, int vis){
int vv = 0;
for(Node i : v[x]){
if(i.x != fa)vv = max(vv, i.w);
}
if(vv >= m){
cout << "No solution." << '\n';
exit(0);
}
if(vv >= vis){
vis = m;
ans++;
}
for(Node i : v[x]){
if(i.x != fa){
dfs(i.x, x, vis - i.w);
}
}
}
signed main(){
cin >> n;
for(int i = 1, k; i <= n; i++){
cin >> k;
for(int j = 1, x, y; j <= k; j++){
cin >> x >> y;
v[i].push_back({x, y});
}
}
cin >> m;
dfs(1, 0, m);
cout << ans << '\n';
return 0;
}