#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> wv;
int mn1, mn2, mn3;
void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) {
n = N;
wv.assign(n, (int)1e9);
vector<pair<int,int>> a; // (weight, node)
for (int i = 0; i < M; i++) {
int other = (U[i] == 0 ? V[i] : U[i]);
wv[other] = W[i];
a.push_back({W[i], other});
}
sort(a.begin(), a.end());
mn1 = a[0].second;
mn2 = a[1].second;
mn3 = a[2].second;
}
int getMinimumFuelCapacity(int X, int Y) {
if (n <= 3) return -1;
int best;
if (mn1 != X && mn1 != Y) best = wv[mn1];
else if (mn2 != X && mn2 != Y) best = wv[mn2];
else best = wv[mn3];
return max({wv[X], wv[Y], best});
}