/*
TASK:capital
LANG:C++
*/

#include <iostream>
using namespace std;

int graph[4000][4000];

int used[4000];
int n;
int k;
int answer;

class town
{
public:      
      long metric;
      town() : metric(0)  {};
      int who; 
      long give_metric(); 
};

town grad[4000];

long town::give_metric()
      {
           //izchislenie
           if(metric>0) return metric;
           if(who==0) return 0;
           used[who]=1;
           long best=0;
           int how_ways=0;
           for(int i=0; i<n; i++)
              if(used[i]==0&&graph[who][i]>0)
                   {
                      if(best>grad[i].give_metric()+graph[who][i]|best==0) 
                          best=grad[i].give_metric()+graph[who][i];
                      else grad[i].metric=0;
                      how_ways++;
                   }
           used[who]=0;        
           if(how_ways==0) return k+1;   
           metric=best;
           return metric;
      } 

int main(void)
{
    cin >> n;
    cin >> k;
    int a,b,c;
    do
      {
              cin >> a >> b >> c;
              if(a!=0)
                      {
                          graph[a-1][b-1]=c;
                          graph[b-1][a-1]=c;
                      }
      }
    while(a!=0);
    for(int i=0; i<n; i++)
            grad[i].who=i;
    for(int i=1; i<n; i++)
          if(grad[i].give_metric()>k) answer++;      
    cout << answer;                   
}
