#include <cstdio>
#include <string.h>
#include <algorithm>
#include <vector>
using namespace std;
#define Mmax 30010
#define Nmax 15010
#define Log 18
struct muchie {
int x, y, cst;
} M[Mmax];
int n, m, nq, maxlg, k;
int viz[Nmax], T[Nmax], Niv[Nmax];
int str[Log][Nmax], din[Log][Nmax];
vector < pair <int, int> > V[Nmax];
void citire () {
int i;
scanf ("%d %d %d", &n, &m, &nq);
for (i = 1; i <= m; i++)
scanf ("%d %d %d", &M[i].x, &M[i].y, &M[i].cst);
}
bool cmp (const muchie &a, const muchie &b) {
return a.cst < b.cst;
}
int Tata (int nod) {
for (; T[nod] > 0; nod = T[nod]);
return nod;
}
void dfs (int nod, int niv) {
viz[nod] = 1; Niv[nod] = niv;
for (vector < pair <int, int> >::iterator it = V[nod].begin (); it != V[nod].end (); it++)
if (!viz[it->first]) {
str[0][it->first] = nod;
din[0][it->first] = it->second;
for (k = 1; str[k-1][ str[k-1][it->first] ] != 0; k++) {
if (k > maxlg) maxlg = k;
str[k][it->first] = str[k-1][ str[k-1][it->first] ];
din[k][it->first] = max (din[k-1][it->first], din[k-1][ str[k-1][it->first] ]);
}
dfs (it->first, niv + 1);
}
}
void APM () {
int i, x, y, t1, t2;
sort (M + 1, M + m + 1, cmp);
memset (T, -1, sizeof (T));
for (i = 1; i <= m; i++) {
x = M[i].x; y = M[i].y;
t1 = Tata (x); t2 = Tata (y);
if (t1 != t2) {
V[ M[i].x ].push_back ( make_pair (M[i].y, M[i].cst) );
V[ M[i].y ].push_back ( make_pair (M[i].x, M[i].cst) );
if (-T[t1] >= -T[t2]) {
T[t1]+= T[t2];
T[t2] = t1;
}
else {
T[t2]+= T[t1];
T[t1] = t2;
}
}
}
}
int query (int x, int y) {
int k, aux, rez = 0;
if (Niv[x] < Niv[y])
aux = x, x = y, y = aux;
for (k = maxlg; k >= 0; k--)
if (Niv[ str[k][x] ] >= Niv[ y ])
rez = max (rez, din[k][x]), x = str[k][x];
for (k = maxlg; k >= 0; k--)
if (str[k][x] != str[k][y]) {
rez = max (rez, max (din[k][x], din[k][y]));
x = str[k][x];
y = str[k][y];
}
if (x != y)
rez = max ( rez, max (din[0][x], din[0][y]) );
return rez;
}
void rezolva () {
int i, x, y;
for (i = 1; i <= nq; i++) {
scanf ("%d %d", &x, &y);
printf ("%d\n", query (x, y));
}
}
int main () {
freopen ("radiatie.in", "r", stdin);
freopen ("radiatie.out", "w", stdout);
citire ();
APM ();
for (int i = 1; i <= n; i++)
if (!viz[i]) dfs (i, 1);
rezolva ();
return 0;
}