{
TASK:capital
LANG:PASCAL
}
var
a : array [1..40000,1..3] of longint;
c : array [1..8000] of boolean;
br,i,n,j : integer;
brv,p,k : longint;
out : boolean;

procedure raz(x,z:integer);
var
j : longint;
begin
if not out then
 if not c[x] then
  if x=z then if p<=k then out:=true else
  else
   for j:=1 to brv do
    if a[j,1]=x then begin p:=p+a[j,3]; c[x]:=true; raz(a[j,2],z); c[x]:=false; p:=p-a[j,3]; end
    else if a[j,2]=x then begin p:=p+a[j,3]; c[x]:=true; raz(a[j,1],z); c[x]:=false; p:=p-a[j,3]; end;
end;

begin
readln(n);
readln(k);
brv:=0;
repeat
inc(brv);
readln(a[brv,1],a[brv,2],a[brv,3]);
until (a[brv,1]=0)and(a[brv,2]=0)and(a[brv,3]=0);
dec(brv);
br:=0;
for j:=1 to 8000 do c[j]:=false;
for i:=2 to n do
 begin
  out:=false;
  p:=0;
  raz(1,i);
  if not out then inc(br);
 end;
writeln(br);
readln;
end.
