//这里填你的代码^^
//注意代码要放在两组三个点之间,才可以正确显示代码高亮哦~
def Floyd():
# k = i = j = 1 # !!!大错误,应该将每个遍历变量的初始化放在循环内,而不是循环外
# while k<=n:
# while i<=n:
# while j<=n:
# dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j])
# j+= 1
# i+= 1
# k+= 1
for k in range(1, n + 1):
for i in range(1, n + 1):
for j in range(1, n + 1):
dist[i][j] = min(dist[i][j], dist[i][k]+dist[k][j])
if __name__ == '__main__':
n, m, q = map(int, input().split())
N = 210
# dist存储i到j的最短距离
dist = [[float('inf')]*N for i in range(N)]
for i in range(N):
for j in range(N):
if i == j: dist[i][j] = 0
for i in range(1, m+1):
x, y, z = map(int, input().split())
dist[x][y] = min(dist[x][y], z)
Floyd()
for i in range(q):
x, y = map(int, input().split())
print('impossible' if dist[x][y] == float('inf') else dist[x][y])