#include <bits/stdc++.h>
using namespace std;
vector<int> W, sorted, weight;
void init(int n, int m, vector<int> U, vector<int> V, vector<int> W) {
weight.resize(n);
for (int i = 0; i < n-1; i++)
weight[V[i]] = W[i];
sorted.resize(n-1);
iota(sorted.begin(), sorted.end(), 1);
sort(sorted.begin(), sorted.end(), [&](int x, int y) { return weight[x] < weight[y]; });
}
int getMinimumFuelCapacity(int x, int y) {
set<int> nodes;
if (x != 0) nodes.insert(x);
if (y != 0) nodes.insert(y);
for (int z : sorted) {
nodes.insert(z);
if (nodes.size() == 3) break;
}
if (nodes.size() < 3) return -1;
int res = 0;
for (int n : nodes)
res = max(res, weight[n]);
return res;
}