#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MXN = 2e5 + 5;
struct BIT
{
int n;
vector<int> ft;
void init(int N)
{
n = N + 5;
ft.assign(n + 5, 0);
}
void add(int pos, int val)
{
for (pos = pos + 1; pos <= n; pos += pos & -pos) ft[pos] += val;
}
int get(int pos, int res = 0)
{
for (pos = pos + 1; pos > 0; pos -= pos & -pos) res += ft[pos];
return res;
}
int query(int l, int r)
{
return get(r) - get(l - 1);
}
};
int n, m, Q;
int e[MXN], mst = 0;
set<int> idx[MXN];
vector<array<int, 2>> addq[MXN], ansq[MXN];
int ans[MXN];
BIT ft;
int get(int x)
{
if (e[x] < 0) return x;
return e[x] = get(e[x]);
}
int unite(int x, int y, int id)
{
x = get(x), y = get(y);
if (x == y) return 0;
if (e[x] > e[y]) swap(x, y);
for (int z : idx[y])
{
auto it = idx[x].lower_bound(z);
if (it != idx[x].end()) addq[*it].push_back({z, id});
if (it != idx[x].begin()) addq[z].push_back({*prev(it), id});
}
for (int z : idx[y]) idx[x].insert(z);
e[x] += e[y];
e[y] = x;
idx[y].clear();
return 1;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> Q;
for (int i = 0; i < n; i++) e[i] = -1, idx[i] = {i};
array<int, 3> ed[m];
for (auto &[w, u, v] : ed) cin >> u >> v >> w;
sort(ed, ed + m);
for (int i = 0; i < m; i++)
{
auto &[w, u, v] = ed[i];
mst += unite(u, v, i) * w;
}
for (int i = 0; i < Q; i++)
{
int l, r;
cin >> l >> r;
ansq[r].push_back({l, i});
}
ft.init(n);
vector<int> cur(m, -1);
for (int i = 0; i < n; i++)
{
for (auto &[l, id] : addq[i])
{
if (cur[id] != -1) ft.add(cur[id], -ed[id][0]);
cur[id] = max(cur[id], l);
ft.add(cur[id], ed[id][0]);
}
for (auto &[l, id] : ansq[i])
{
ans[id] = mst - ft.query(l, i);
}
}
for (int i = 0; i < Q; i++) cout << ans[i] << '\n';
}