#include <stdio.h>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
long n, i, j, k, a[30010], b[30010], c[30010], p[30010], m, a1, a2, b1, b2, o, st, l, maxi;
long t[15000], f[15010], g[15010], r[16][15010], q[16][15010], s;
vector <long> v[15010], w[15010];
pair<long, pair<long, long> > per[30010];
long ma(long a, long b)
{
if(a>b) return a;
return b;
}
inline long cmp(long x, long y)
{
return c[x]<c[y];
}
void df(long x, long gr)
{
long y;
f[x]=1;
// printf("%d\n", x);
for(y=0; y<v[x].size(); y++)
{
if(f[v[x][y]]==0)
{
df(v[x][y], gr+1);
q[0][v[x][y]]=w[x][y];
r[0][v[x][y]]=x;
}
}
g[x]=gr;
}
int main()
{
freopen("radiatie.in", "r", stdin);
freopen("radiatie.out", "w", stdout);
scanf("%d %d %d\n", &n, &m, &k);
for(i=1; i<=m; i++)
{
scanf("%d %d %d", &a[i], &b[i], &c[i]);
per[i] = make_pair(c[i], make_pair(a[i], b[i]) );
}
for(i=1; i<=n; i++)
{
t[i]=i;
}
sort(per+1, per+m+1);
for(i=1; i<=m; i++)
{
a[i]=per[i].second.first;
b[i]=per[i].second.second;
c[i]=per[i].first;
}
for(i=1; i<=m; i++)
{
a1=a[i];
a2=b[i];
while(a1!=t[a1])
a1=t[a1];
while(a2!=t[a2])
a2=t[a2];
b1=a1;
b2=a2;
// printf("%d %d\n", b1, b2);
if(a2!=a1)
{
t[a2]=a1;
v[a[i]].push_back(b[i]);
w[a[i]].push_back(c[i]);
v[b[i]].push_back(a[i]);
w[b[i]].push_back(c[i]);
b2=a1;
}
a1=a[i];
a2=b[i];
while(a1!=t[a1])
{
o=a1;
a1=t[a1];
t[o]=b1;
}
while(a2!=t[a2])
{
o=a2;
a2=t[a2];
t[o]=b2;
}
// for(j=1; j<=n; j++)
// printf("%d %d\n", j, t[j]);
// printf("\n");
}
for(i=1; i<=n; i++)
{
if(t[i]==i)
{
v[0].push_back(i);
w[0].push_back(0);
t[i]=0;
}
}
df(0, 0);
for(i=1; 1<<i<=n; i++)
{
for(j=1; j<=n; j++)
{
st=r[i-1][j];
r[i][j]=r[i-1][st];
q[i][j]=ma(q[i-1][j], q[i-1][st]);
}
}
/* for(i=0; 1<<i<=n; i++)
{
for(j=0; j<=n; j++)
printf("%d ", r[i][j]);
printf("\n");
}
printf("\n");
for(i=0; 1<<i<=n; i++)
{
for(j=0; j<=n; j++)
printf("%d ", q[i][j]);
printf("\n");
}*/
for(l=1; l<=k; l++)
{
scanf("%d %d", &a1, &a2);
maxi=0;
if(g[a1]>g[a2])
{
s=15;
while(s>=0)
{
st=r[s][a1];
if(g[st]>=g[a2])
{
maxi=ma(maxi, q[s][a1]);
a1=st;
}
s--;
}
}
else
if(g[a2]>g[a1])
{
s=15;
while(s>=0)
{
st=r[s][a2];
if(g[st]>=g[a1])
{
maxi=ma(maxi, q[s][a2]);
a2=st;
}
s--;
}
}
// printf("%d\n", maxi);
// printf("%d %d\n", a1, a2);
if(a1!=a2)
{
s=15;
while(s>=0)
{
b1=r[s][a1];
b2=r[s][a2];
if(b1!=b2)
{
// printf("*");
maxi=ma(maxi, q[s][a1]);
maxi=ma(maxi, q[s][a2]);
a1=b1;
a2=b2;
}
s--;
}
// printf("%d\n", maxi);
b1=r[0][a1];
b2=r[0][a2];
maxi=ma(maxi, q[0][a1]);
maxi=ma(maxi, q[0][a2]);
}
printf("%d\n", maxi);
// printf("\n");
}
return 0;
}