#include <cstdio>
#define DIM 15005
const int INF = 1<<30;
struct nod
{
int x, cost;
nod *next;
};
nod *G[DIM];
int n, m, k, vs[DIM], vd[DIM], Min = INF, v[DIM];
void addMuchie(int i, int j, int c)
{
nod *p = new nod;
p -> x = j;
p -> cost = c;
p -> next = G[i];
G[i] = p;
}
void read()
{
FILE *f = fopen("radiatie.in", "r");
fscanf(f, "%d%d%d", &n, &m, &k);
for (int x, y, c;m;--m)
{
fscanf(f, "%d%d%d", &x, &y, &c);
addMuchie(x, y, c);
addMuchie(y, x, c);
}
for (int i = 1; i <= k; ++i)
fscanf(f, "%d%d", &vs[i], &vd[i]);
fclose(f);
}
void DFS(int i, int d, int lmax)
{
if (i == d)
{
if (lmax < Min)
Min = lmax;
return;
}
for (nod *p = G[i]; p; p = p->next)
if (!v[p->x])
{
if (p->cost > Min) continue;
v[p->x] = 1;
DFS(p->x, d, (p->cost) < lmax ? lmax : (p->cost));
v[p->x] = 0;
}
}
FILE *f = fopen("radiatie.out", "w");
void curata()
{
for (int i = 1; i <= n; ++i)
v[i] = 0;
fprintf (f, "%d\n", Min);
}
void solve()
{
for (int i = 1; i <= k; ++i)
DFS(vs[i], vd[i], -1), curata(), Min = INF;
}
int main()
{
read();
solve();
fclose(f);
return 0;
}