#include <stdio.h>
#include <string.h>
int n,m,K,x[30000],y[30000],cost[30000],t[15001],h[15001],ch[15001];
void qSort(long int st, long int dr)
{
long int i=st,j=dr,m=cost[(i+j)/2];
do
{
while (cost[i]<m) i++;
while (cost[j]>m) j--;
if (i<=j)
{
long int aux=cost[i]; cost[i]=cost[j]; cost[j]=aux;
aux=x[i]; x[i]=x[j]; x[j]=aux;
aux=y[i]; y[i]=y[j]; y[j]=aux;
i++; j--;
}
}
while (i<=j);
if (st<j) qSort(st,j);
if (i<dr) qSort(i,dr);
}
int max(int a, int b)
{
if (a>b) return a;
else return b;
}
int main()
{
FILE *f,*g;
f=fopen("radiatie.in","r");
g=fopen("radiatie.out","w");
fscanf(f,"%d %d %d",&n,&m,&K);
for (int i=0;i<m;i++) fscanf(f,"%d %d %d",&x[i],&y[i],&cost[i]);
for (int i=1;i<=n;i++) t[i]=0,h[i]=1,ch[i]=0;
qSort(0,m-1);
int nr_drumuri=n-1;
for (long int k=0;k<m && nr_drumuri>0;k++)
{
long int a=x[k];
while (t[a]>0) a=t[a];
long int b=y[k];
while (t[b]>0) b=t[b];
if (a!=b)
{
nr_drumuri--;
if (h[a]<h[b]) t[a]=b,ch[a]=cost[k];
else if (h[a]>h[b]) t[b]=a,ch[b]=cost[k];
else t[b]=a,h[a]++,ch[b]=cost[k];
}
else cost[k]=-1;
}
for (int kk=0;kk<K;kk++)
{
int ax,ay;
memset(h,0,sizeof(h));
fscanf(f,"%d %d",&ax,&ay);
h[ax]=0;
while (t[ax]>0) h[t[ax]]=max(h[ax],ch[ax]),ax=t[ax];
int vmax=0;
while (t[ay]>0 && h[ay]==0) vmax=max(vmax,ch[ay]),ay=t[ay];
vmax=max(vmax,h[ay]);
fprintf(g,"%d\n",vmax);
}
fclose(f);
fclose(g);
return 0;
}