#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 1e18;
const int MOD = 1e9+7;
const int MAXN = 2e5;
typedef tuple<int, int, int> ti3;
int n, m;
vector<ti3> adj[MAXN+5];
int par[MAXN+5];
int freq[MAXN+5];
int ans[MAXN+5];
void dfs(int cur){
for(int i = 1; i <= m; i++){
ans[cur] += (freq[i] > 0);
}
for(auto [next, l, r] : adj[cur]){
if(next == par[cur]) continue;
for(int j = l; j <= r; j++) freq[j]++;
par[next] = cur;
dfs(next);
for(int j = l; j <= r; j++) freq[j]--;
}
}
void solve(){
cin >> n >> m;
for(int i = 1; i <= n-1; i++){
int u, v, l, r; cin >> u >> v >> l >> r;
adj[u].push_back({v, l, r});
adj[v].push_back({u, l, r});
}
dfs(1);
for(int i = 2; i <= n; i++) cout << ans[i] << endl;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int tc = 1;
// cin >> tc;
while(tc--){
solve();
}
return 0;
}
/*
6 6
1 2 2 4
1 3 1 4
2 4 3 5
2 5 5 6
3 6 2 3
=>
3
4
4
5
4
*/