#include<bits/stdc++.h>
#define R register int
using namespace std;
const int inf=0x3f3f3f3f;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9') if(ch=='-') f=-1,ch=getchar();
while(ch>='0'&&ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
return x*f;
}
int n,m,k,a[201][201];
int main()
{
n=read();m=read();k=read();
for(R i=1;i<=n;i++)
for(R j=1;j<=n;j++)
{
if(i==j) a[i][j]=0;
else a[i][j]=inf;
}
for(R i=1;i<=m;i++)
{
int x=read(),y=read(),z=read();
a[x][y]=min(a[x][y],z);//存在重边
}
for(R k=1;k<=n;k++)
for(R i=1;i<=n;i++)
for(R j=1;j<=n;j++)
a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
for(R i=1;i<=k;i++)
{
int x=read(),y=read();
if(a[x][y]>=inf/2) printf("impossible\n");
else printf("%d\n",a[x][y]);
}
return 0;
}