#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll n, k, a, b, c;
cin >> n >> k;
vector<pair<ll, ll>> yhteydet[n];
for (ll i = 1; i < n; i++)
{
cin >> a >> b >> c;
yhteydet[a].push_back({b, c});
yhteydet[b].push_back({a, c});
}
a = -1;
b = -1;
for (ll i = 0; i < n; i++)
{
if (yhteydet[i].size() > 1)
continue;
if (a == -1)
a = i;
else
b = i;
}
ll maarat[n];
for (ll i = 0; i < n; i++)
{
maarat[i] = 0ll;
}
for (ll sdfgs = 1; sdfgs <= 2; sdfgs++)
{
vector<tuple<ll, ll, ll>> edelliset;
queue<tuple<ll, ll, ll>> seuraavat;
ll e = -1;
ll edellinen = sdfgs == 1 ? a : b;
ll uusia = n;
while (true)
{
uusia--;
auto s = yhteydet[edellinen].at(0);
ll seuraava = s.first;
if (seuraava == e)
{
s = yhteydet[edellinen].at(1);
seuraava = s.first;
}
ll pituus = s.second;
ll tankkauksia = 0;
ll tuloja = 0;
for (auto u : edelliset)
{
ll maara = get<0>(u);
ll jaljella = get<1>(u);
ll poistuu = get<2>(u);
if (jaljella >= pituus)
{
seuraavat.push({maara - poistuu, jaljella - pituus, poistuu});
}
else
{
tankkauksia += maara - poistuu;
tuloja += poistuu;
}
}
maarat[edellinen] += tankkauksia;
seuraavat.push({tankkauksia + uusia, k - pituus, tuloja + 1});
if (seuraava == (sdfgs == 1 ? b : a))
break;
e = edellinen;
edellinen = seuraava;
edelliset.clear();
while (!seuraavat.empty())
{
edelliset.push_back(seuraavat.front());
seuraavat.pop();
}
}
}
for (ll i : maarat)
{
cout << i << "\n";
}
}
/*
10 18
1 0 6
1 2 1
2 3 4
3 4 9
4 5 5
5 6 3
6 7 8
7 8 7
8 9 2
*/