#include<bits/stdc++.h>
using namespace std;
const int N=50100;
int n,m,b,u,v,w,h[N],l,s=1,dis[N];
bool f[N];
struct edge{
int v,w,next;
}e[200009];
void add(int u,int v,int w){
e[++l].v=v;
e[l].w=w;
e[l].next=h[u];
h[u]=l;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>n>>m>>b;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
memset(dis,0x3f,sizeof dis);
dis[1]=0;
while(!f[s]){
f[s]=1;
for(int ne=h[s];ne;ne=e[ne].next){
if(dis[e[ne].v]>dis[s]+e[ne].w){
dis[e[ne].v]=dis[s]+e[ne].w;
}
}
s=0;
for(int i=1;i<=n;i++){
if(!f[i]&&dis[i]<dis[s]){
s=i;
}
}
}
while(b--){
cin>>u>>v;
cout<<dis[u]+dis[v]<<endl;
}
return 0;
}