#define MAX 0x3fffffff
int map[305][305];
int max(int a ,int b)
{
if(a>b)return a;
return b;
}
int main()
{
int n,m,end,i,j,k,a,b;
while(scanf("%d%d%d",&n,&m,&end)!=EOF)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
map[i][j]=MAX;
}
}
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
scanf("%d",&map[a][b]);
}
int temp;
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
temp=max(map[i][k],map[k][j]);
if(map[i][j]>temp)
map[i][j]=temp;
}
}
}
for(i=1;i<=end;i++)
{
scanf("%d%d",&a,&b);
if(map[a][b]!=MAX)
printf("%d\n",map[a][b]);
else
printf("-1\n");
}
}
}