#include<stdio.h>
#define fin "radiatie.in"
#define fout "radiatie.out"
#define Nmax 50001
#define Mmax 100001
#define Inf 100000000000LL
int n,m,k,adr[Nmax],v[Mmax][3],ask[Nmax][4],viz[Nmax];
long long cost[Nmax];
int st[Nmax];
FILE *in,*out;
void swap(int &a,int &b) { int aux; aux=a; a=b; b=aux; }
long long max(long long a,long long b) {
if (a>b) return a;
return b;
}
void qsort1(int st,int dr){
int i,j,m;
i=st; j=dr;
m=v[(i+j)/2][0];
do {
while (v[i][0]<m) ++i;
while (v[j][0]>m) --j;
if (i<=j) {
swap(v[i][0],v[j][0]);
swap(v[j][1],v[i][1]);
swap(v[i][2],v[j][2]);
++i; --j;
}
} while (i<j);
if (i<dr) qsort1(i,dr);
if (j>st) qsort1(st,j);
}
void qsort2(int st,int dr,int p){
int i,j,m;
i=st; j=dr;
m=ask[(i+j)/2][p];
do {
while (ask[i][p]<m) ++i;
while (ask[j][p]>m) --j;
if (i<=j) {
swap(ask[i][0],ask[j][0]);
swap(ask[j][1],ask[i][1]);
swap(ask[i][2],ask[j][2]);
swap(ask[i][3],ask[j][3]);
++i; --j;
}
} while (i<j);
if (i<dr) qsort2(i,dr,p);
if (j>st) qsort2(st,j,p);
}
void run() {
int i,nod,poz;
long long min,cost1;
min=Inf;
for (i=1;i<=st[0];++i)
if (cost[st[i]]<min) {
min=cost[st[i]];
nod=st[i];
poz=i;
}
if (min==Inf) return;
viz[nod]=1;
st[poz]=st[st[0]];
st[0]--;
for (i=adr[nod];v[i][0]==nod;++i)
if (!viz[v[i][1]]) {
cost1=max(cost[nod],v[i][2]);
if (!cost[v[i][1]]) {
cost[v[i][1]]=cost1;
st[++st[0]]=v[i][1];
}
else
if (cost[v[i][1]]>cost1)
cost[v[i][1]]=cost1;
}
if (st[0]) run();
}
int main() {
int i,j;
in=fopen(fin,"r"); out=fopen(fout,"w");
fscanf(in,"%i%i%i",&n,&m,&k);
for (i=1;i<=m;++i) {
fscanf(in,"%i%i%i",&v[i][0],&v[i][1],&v[i][2]);
v[m+i][0]=v[i][0];
v[m+i][1]=v[i][1];
v[m+i][2]=v[i][2];
swap(v[m+i][0],v[m+i][1]);
}
m*=2;
qsort1(1,m);
for (i=1;i<=m;) {
j=i;
adr[v[i][0]]=i;
while (v[j][0]==v[i][0] && j<=m) ++j;
i=j;
}
for (i=1;i<=k;++i) {
fscanf(in,"%i%i",&ask[i][0],&ask[i][1]);
ask[i][2]=i;
if (ask[i][0]>ask[i][1]) swap(ask[i][0],ask[i][1]);
}
qsort2(1,k,0);
//for (i=1;i<=n;++i) printf("%i ",adr[i]);
for (i=1;i<=k;) {
for (j=1;j<=n;++j) { cost[j]=0; viz[j]=0; }
st[0]=1; st[1]=ask[i][0];
viz[ask[i][0]]=1;
run();
j=i;
while (ask[j][0]==ask[i][0] && j<=k) {
ask[j][3]=cost[ask[j][1]];
++j;
}
i=j;
}
qsort2(1,k,2);
for (i=1;i<=k;++i) fprintf(out,"%i\n",ask[i][3]);
//for (i=1;i<=m;++i) printf("\n%i %i",v[i][0],v[i][1]);
//printf("\n");
//for (i=1;i<=k;++i) printf("\n%i %i",ask[i][0],ask[i][1]);
fclose(in); fclose(out);
return 0;
}