#include <bits/stdc++.h>
using namespace std;
const int N = 200000 + 5;
const int LOG = 18;
const int INF = 1e18;
vector<pair<int,int>> adj[N];
int par[N][LOG];
int mn[N][LOG], mx[N][LOG];
int depth[N];
int n, q;
/* DFS khởi tạo */
void dfs(int u, int p, int w){
par[u][0] = p;
mn[u][0] = w;
mx[u][0] = w;
for(auto [v, wt] : adj[u]){
if(v == p) continue;
depth[v] = depth[u] + 1;
dfs(v, u, wt);
}
}
/* Build bảng nhảy */
void build(){
for(int k = 1; k < LOG; k++){
for(int i = 1; i <= n; i++){
int p = par[i][k-1];
par[i][k] = par[p][k-1];
mn[i][k] = min(mn[i][k-1], mn[p][k-1]);
mx[i][k] = max(mx[i][k-1], mx[p][k-1]);
}
}
}
/* Query min/max trên đường đi */
pair<int,int> query(int u, int v){
int Min = INF, Max = 0;
if(depth[u] < depth[v]) swap(u, v);
// Đưa u lên cùng độ sâu với v
int diff = depth[u] - depth[v];
for(int k = 0; k < LOG; k++){
if(diff & (1 << k)){
Min = min(Min, mn[u][k]);
Max = max(Max, mx[u][k]);
u = par[u][k];
}
}
if(u == v) return {Min, Max};
// Nhảy song song lên LCA
for(int k = LOG - 1; k >= 0; k--){
if(par[u][k] != par[v][k]){
Min = min({Min, mn[u][k], mn[v][k]});
Max = max({Max, mx[u][k], mx[v][k]});
u = par[u][k];
v = par[v][k];
}
}
// Bước cuối lên LCA
Min = min({Min, mn[u][0], mn[v][0]});
Max = max({Max, mx[u][0], mx[v][0]});
return {Min, Max};
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for(int i = 1; i < n; i++){
int u, v, w;
cin >> u >> v >> w;
adj[u].push_back({v, w});
adj[v].push_back({u, w});
}
depth[1] = 0;
dfs(1, 0, INF);
build();
while(q--){
int u, v;
cin >> u >> v;
auto res = query(u, v);
cout << res.first << " " << res.second << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTiA9IDIwMDAwMCArIDU7CmNvbnN0IGludCBMT0cgPSAxODsKY29uc3QgaW50IElORiA9IDFlMTg7Cgp2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gYWRqW05dOwppbnQgcGFyW05dW0xPR107CmludCBtbltOXVtMT0ddLCBteFtOXVtMT0ddOwppbnQgZGVwdGhbTl07CmludCBuLCBxOwoKLyogREZTIGto4bufaSB04bqhbyAqLwp2b2lkIGRmcyhpbnQgdSwgaW50IHAsIGludCB3KXsKICAgIHBhclt1XVswXSA9IHA7CiAgICBtblt1XVswXSA9IHc7CiAgICBteFt1XVswXSA9IHc7CgogICAgZm9yKGF1dG8gW3YsIHd0XSA6IGFkalt1XSl7CiAgICAgICAgaWYodiA9PSBwKSBjb250aW51ZTsKICAgICAgICBkZXB0aFt2XSA9IGRlcHRoW3VdICsgMTsKICAgICAgICBkZnModiwgdSwgd3QpOwogICAgfQp9CgovKiBCdWlsZCBi4bqjbmcgbmjhuqN5ICovCnZvaWQgYnVpbGQoKXsKICAgIGZvcihpbnQgayA9IDE7IGsgPCBMT0c7IGsrKyl7CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgICAgICBpbnQgcCA9IHBhcltpXVtrLTFdOwogICAgICAgICAgICBwYXJbaV1ba10gPSBwYXJbcF1bay0xXTsKICAgICAgICAgICAgbW5baV1ba10gPSBtaW4obW5baV1bay0xXSwgbW5bcF1bay0xXSk7CiAgICAgICAgICAgIG14W2ldW2tdID0gbWF4KG14W2ldW2stMV0sIG14W3BdW2stMV0pOwogICAgICAgIH0KICAgIH0KfQoKLyogUXVlcnkgbWluL21heCB0csOqbiDEkcaw4budbmcgxJFpICovCnBhaXI8aW50LGludD4gcXVlcnkoaW50IHUsIGludCB2KXsKICAgIGludCBNaW4gPSBJTkYsIE1heCA9IDA7CgogICAgaWYoZGVwdGhbdV0gPCBkZXB0aFt2XSkgc3dhcCh1LCB2KTsKCiAgICAvLyDEkMawYSB1IGzDqm4gY8O5bmcgxJHhu5kgc8OidSB24bubaSB2CiAgICBpbnQgZGlmZiA9IGRlcHRoW3VdIC0gZGVwdGhbdl07CiAgICBmb3IoaW50IGsgPSAwOyBrIDwgTE9HOyBrKyspewogICAgICAgIGlmKGRpZmYgJiAoMSA8PCBrKSl7CiAgICAgICAgICAgIE1pbiA9IG1pbihNaW4sIG1uW3VdW2tdKTsKICAgICAgICAgICAgTWF4ID0gbWF4KE1heCwgbXhbdV1ba10pOwogICAgICAgICAgICB1ID0gcGFyW3VdW2tdOwogICAgICAgIH0KICAgIH0KCiAgICBpZih1ID09IHYpIHJldHVybiB7TWluLCBNYXh9OwoKICAgIC8vIE5o4bqjeSBzb25nIHNvbmcgbMOqbiBMQ0EKICAgIGZvcihpbnQgayA9IExPRyAtIDE7IGsgPj0gMDsgay0tKXsKICAgICAgICBpZihwYXJbdV1ba10gIT0gcGFyW3ZdW2tdKXsKICAgICAgICAgICAgTWluID0gbWluKHtNaW4sIG1uW3VdW2tdLCBtblt2XVtrXX0pOwogICAgICAgICAgICBNYXggPSBtYXgoe01heCwgbXhbdV1ba10sIG14W3ZdW2tdfSk7CiAgICAgICAgICAgIHUgPSBwYXJbdV1ba107CiAgICAgICAgICAgIHYgPSBwYXJbdl1ba107CiAgICAgICAgfQogICAgfQoKICAgIC8vIELGsOG7m2MgY3Xhu5FpIGzDqm4gTENBCiAgICBNaW4gPSBtaW4oe01pbiwgbW5bdV1bMF0sIG1uW3ZdWzBdfSk7CiAgICBNYXggPSBtYXgoe01heCwgbXhbdV1bMF0sIG14W3ZdWzBdfSk7CgogICAgcmV0dXJuIHtNaW4sIE1heH07Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGNpbiA+PiBuID4+IHE7CiAgICBmb3IoaW50IGkgPSAxOyBpIDwgbjsgaSsrKXsKICAgICAgICBpbnQgdSwgdiwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgYWRqW3VdLnB1c2hfYmFjayh7diwgd30pOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2soe3UsIHd9KTsKICAgIH0KCiAgICBkZXB0aFsxXSA9IDA7CiAgICBkZnMoMSwgMCwgSU5GKTsKICAgIGJ1aWxkKCk7CgogICAgd2hpbGUocS0tKXsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGF1dG8gcmVzID0gcXVlcnkodSwgdik7CiAgICAgICAgY291dCA8PCByZXMuZmlyc3QgPDwgIiAiIDw8IHJlcy5zZWNvbmQgPDwgJ1xuJzsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=