#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,t;
struct node{
int v,w;
};
int u,v,w;
vector<node>e[305];
int s,ee;
int l,r,rr=INT_MIN;
int vis[305];
bool flag=false;
void dfs(int u,int x){
if(flag)return;
if(u==ee){
flag=true;
return;
}
for(int i=0;i<e[u].size();i++){
int v=e[u][i].v;
int w=e[u][i].w;
if(vis[v]==0&&w<=x){
vis[v]=1;
dfs(v,x);
}
}
return;
}
bool check(int x){
memset(vis,0,sizeof(vis));
vis[s]=1;
flag=false;
dfs(s,x);
return flag;
}
int ans;
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m>>t;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
e[u].push_back({v,w});
rr=max(rr,w);
}
while(t--){
ans=-1;
cin>>s>>ee;
l=0,r=rr;
while(l<=r){
int mid=(l+r)/2;
if(check(mid)){
r=mid-1;
ans=mid;
}else l=mid+1;
}
cout<<ans<<'\n';
}
return 0;
}