#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 400010;
int h[N],e[N],w[N],ne[N],idx;
void add(int a,int b,int c){e[idx]=b,ne[idx]=h[a],w[idx]=c,h[a]=idx++;}
int n,m,q;
int dfn[N],low[N],tot=0,stk[N],tp=0,vis[N];
vector<int> v[N];
vector<int> wa[N];
vector<int> b;
int f[N],flag[N];
int nxt[N],nw[N];
int count_sum(int u)
{
if(flag[u]) return 0;
flag[u]=1;
for(int i=h[u];i!=-1;i=ne[i])
{
if(f[e[i]])
{
nxt[u]=e[i];
nw[u]=w[i];
int q=count_sum(e[i])+w[i];
return q;
}
}
}
int cnt=n;
void dfs(int u)
{
low[u]=dfn[u]=++tot;
stk[++tp]=u;vis[u]=1;
for(int i=h[u];i!=-1;i=ne[i])
{
if(!dfn[e[i]])
{
dfs(e[i]);
low[u]=min(low[u],low[e[i]]);
if(low[e[i]]==dfn[u])
{
f[u]=1;
b.push_back(u);
for (int x = 0; x != e[i]; --tp)
{
x=stk[tp];
f[x]=1;b.push_back(x);
}//cout<<endl;
int sum=count_sum(u);
int id=nxt[u];
int h=nw[u];
cnt++;
int t=b.size();
for(int i=0;i<t;i++) f[b[i]]=0,flag[b[i]]=0;
while(id!=u)
{
// cout<<id<<" aa"<<cnt<<endl;
v[id].push_back(cnt);
wa[id].push_back(min(h,q-h));
v[cnt].push_back(id);
wa[cnt].push_back(min(h,q-h));
h+=nw[id];
id=nxt[id];
}
// cout<<u<<" "<<cnt<<endl;
v[cnt].push_back(u);wa[cnt].push_back(0);
v[u].push_back(cnt);wa[u].push_back(0);
b.clear();
}
}
else low[u]=min(low[u],dfn[e[i]]);
}
}
int ww[N][25],dp[N][25],dep[N],gk[N];
void init(int u,int f,int w)
{//cout<<u<<endl;
gk[u]=1;
dep[u]=dep[f]+1;
dp[u][0]=f;ww[u][0]=w;
int t=v[u].size();
for(int i=1;i<=24;i++)
{
dp[u][i]=dp[dp[u][i-1]][i-1];
ww[u][i]=ww[u][i-1]+ww[dp[u][i-1]][i-1];
}
for(int i=0;i<t;i++)
{
if(v[u][i]!=f)init(v[u][i],u,wa[u][i]);//cout<<"adf";
}
}
int lca(int a,int b)
{
if(dep[a]<dep[b])swap(a,b);
int k=dep[a]-dep[b];
int sum=0;
for(int i=0;i<=22;i++)
{
if(k&(1<<i)) sum+=ww[a][i],a=dp[a][i];
}
if(a==b) return sum;
for(int i=22;i>=0;i--)
{
if(dp[a][i]!=dp[b][i])
{
sum+=ww[a][i];sum+=ww[b][i];
a=dp[a][i],b=dp[b][i];
}
}
return sum+ww[a][0]+ww[b][0];
}
signed main()
{
scanf("%lld%lld%lld",&n,&m,&q);
cnt=n;
memset(h,-1,sizeof h);
for(int i=1;i<=m;i++)
{
int a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);
add(a,b,c);
add(b,a,c);
}
for(int i=1;i<=n;i++)
{
if(!dfn[i]) dfs(i),tp--;
}
for(int i=1;i<=cnt;i++)
{
if(!gk[i]) init(i,i,0);
}//cout<<"asdgf";
while(q--)
{
int a,b;
scanf("%lld%lld",&a,&b);
cout<<lca(a,b)<<endl;
}
}