#include <stdio.h>
#include <algorithm>
using namespace std;
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define mmax 32768
#define f first
#define s second
#define mp make_pair
int n,m,k,h[mmax],ct[mmax],par[mmax],cul[mmax];
pair <int,pair<int,int> > V[mmax];
void marc(int i,int z)
{
cul[i]+=z;
if(par[i]!=i)
marc(par[i],z);
}
int doit(int i)
{
if(cul[i]==2)
return 0;
return max(doit(par[i]),ct[i]);
}
int rep(int i)
{
if(i==par[i])
return i;
return rep(par[i]);
}
int main()
{
int ii,i,j,c;
freopen("radiatie.in","r",stdin);
freopen("radiatie.out","w",stdout);
scanf("%d %d %d",&n,&m,&k);
FOR(ii,0,m)
{
scanf("%d %d %d",&i,&j,&c);
i--,j--;
V[ii]=mp(c,mp(i,j));
}
FOR(i,0,n)
par[i]=i;
sort(V,V+m);
FOR(ii,0,m)
{
i=rep(V[ii].s.f);
j=rep(V[ii].s.s);
if(i==j)
continue;
if(h[i]>h[j])
par[j]=i,ct[j]=V[ii].f;
else
{
par[i]=j;
ct[i]=V[ii].f;
if(h[i]==h[j])
h[j]++;
}
}
FOR(ii,0,k)
{
scanf("%d %d",&i,&j);
i--,j--;
marc(i,1);
marc(j,1);
printf("%d\n",max(doit(i),doit(j)));
marc(i,-1);
marc(j,-1);
}
return 0;
}