#include <bits/stdc++.h>
#define cint const int &
#define pii pair<int, int>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 201, maxm = 20001;
struct {
int nxt, v, w;
} edge[maxm + maxn];
struct {
int nxt, y;
} qry[maxn * maxn];
int head[maxn], qrys[maxn], cnt, qcnt, n, m, k, x, y, z;
inline void addedge(cint u, cint v, cint w) {
edge[++cnt] = {head[u], v, w};
head[u] = cnt;
}
inline void addqry(cint x, cint y) {
qry[++qcnt] = {qrys[x], y};
qrys[x] = qcnt;
}
int h[maxn], dis[maxn];
bool vis[maxn];
inline void spfa(cint s, cint n) {
static queue<int> q;
memset(h, inf, sizeof(h[0]) * (n + 1));
memset(vis, 0, n + 1);
q.push(s); h[s] = 0;
while (!q.empty()) {
const int u = q.front();
q.pop(); vis[u] = 0;
for (int i = head[u]; i; i = edge[i].nxt) {
const int v = edge[i].v, w = edge[i].w;
if (h[v] > h[u] + w) {
h[v] = h[u] + w;
if (!vis[v])
vis[v] = 1,
q.push(v);
}
}
}
}
inline void dijkstra(cint s, cint n) {
static priority_queue<pii, vector<pii>, greater<pii>> pq;
memset(dis, inf, sizeof(dis[0]) * (n + 1));
memset(vis, 0, n + 1);
pq.push({dis[s] = 0, s});
int u, du;
while (!pq.empty()) {
tie(du, u) = pq.top();
pq.pop();
if (vis[u]) continue;
vis[u] = 1;
for (int i = head[u]; i; i = edge[i].nxt) {
const int v = edge[i].v, w = edge[i].w;
if (dis[v] > du + w)
pq.push({dis[v] = du + w, v});
}
}
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
// ifstream ifs(".in");
// ofstream ofs(".out");
// cin.rdbuf(ifs.rdbuf()),cout.rdbuf(ofs.rdbuf());
cin >> n >> m >> k;
for (int i = 1; i <= m; ++i)
cin >> x >> y >> z, addedge(x, y, z);
for (int i = 1; i <= k; ++i)
cin >> x >> y, addqry(x, y);
for (int i = 1; i <= n; ++i)
addedge(0, i, 0);
spfa(0, n);
for (int u = 1; u <= n; ++u)
for (int i = head[u]; i; i = edge[i].nxt)
edge[i].w += h[u] - h[edge[i].v];
for (int x = 1; x <= n; ++x) {
dijkstra(x, n);
for (int i = qrys[x]; i; i = qry[i].nxt) {
const int y = qry[i].y;
if (dis[y] == inf) qry[i].y = inf;
else qry[i].y = dis[y] - h[x] + h[y];
}
}
for (int i = 1; i <= k; ++i)
if (qry[i].y == inf) cout << "impossible\n";
else cout << qry[i].y << '\n';
}