#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
int n,m,q;
int graph[103][103];
void init(){
memset(graph,INF,sizeof graph);
for(int i=0;i<=102;i++){
graph[i][i]=0;
}
}
void read(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
if(graph[v][u]<w) continue;
graph[v][u]=w;
graph[u][v]=w;
}
}
void floyd(){
for(int c=1;c<=n;c++){
for(int j=1;j<=n;j++){
for(int i=1;i<=n;i++){
graph[i][j]=min(max(graph[i][c],graph[c][j]),graph[i][j]);
}
}
}
}
void output(){
for(int i=1;i<=q;i++){
int l,r;
cin>>l>>r;
if(graph[l][r]!=INF) cout<<graph[l][r]<<endl;
else cout<<-1<<endl;
}
}
signed main(){
init();
read();
floyd();
output();
return 0;
}