//有点类似营救那道题,几乎是模板(要不是我写Floyd写的少,我才不写这题)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=310;
int f[maxn][maxn],n,m,t;
int main(){
int a,b,c;
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=100000000;
}
}
for(int i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
f[a][b]=c;
}
for(int k=1;k<=n;k++){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i==j){
f[i][j]=0;
continue;
}
if(max(f[i][k],f[k][j])<f[i][j]){
f[i][j]=max(f[i][k],f[k][j]);
}
}
}
}
while(t--){
scanf("%d%d",&a,&b);
if(f[a][b]==100000000) cout<<-1<<endl;
else cout<<f[a][b]<<endl;
}
return 0;
}