#include <bits/stdc++.h>
using namespace std;
struct DSU {
int n; vector<int> p, r;
DSU(int n=0): n(n), p(n), r(n,0){ iota(p.begin(), p.end(), 0); }
int find(int x){ return p[x]==x? x: p[x]=find(p[x]); }
bool unite(int a,int b){
a=find(a); b=find(b);
if(a==b) return false;
if(r[a]<r[b]) swap(a,b);
p[b]=a; if(r[a]==r[b]) r[a]++;
return true;
}
};
struct Edge {int u,v; int w;};
const int LOG = 20; // enough for n<=1e5
int n, m, q;
vector<vector<pair<int,int>>> g; // MST adjacency: to, w
long long Wtot = 0;
int up[LOG][100005];
int mx[LOG][100005];
int depth_[100005];
int tin[100005];
int timer_ = 0;
void dfs(int u, int p, int w){
tin[u] = ++timer_;
up[0][u] = (p==-1? u : p);
mx[0][u] = (p==-1? 0 : w);
for (auto [v,c]: g[u]){
if (v==p) continue;
depth_[v] = depth_[u] + 1;
dfs(v,u,c);
}
}
int maxOnPath(int u, int v){
if (u==v) return 0;
int res = 0;
if (depth_[u] < depth_[v]) swap(u,v);
int d = depth_[u] - depth_[v];
for (int k=LOG-1;k>=0;--k){
if (d>>k & 1){
res = max(res, mx[k][u]);
u = up[k][u];
}
}
if (u==v) return res;
for (int k=LOG-1;k>=0;--k){
if (up[k][u] != up[k][v]){
res = max(res, mx[k][u]);
res = max(res, mx[k][v]);
u = up[k][u];
v = up[k][v];
}
}
// now u and v are children of LCA
res = max(res, mx[0][u]);
res = max(res, mx[0][v]);
return res;
}
struct Query{
int L, R, id, block;
};
int B; // block size for Mo
bool mo_cmp(const Query& a, const Query& b){
if (a.block != b.block) return a.block < b.block;
if (a.block & 1) return a.R > b.R;
return a.R < b.R;
}
set<pair<int,int>> byTin; // (tin[v], v)
vector<char> alive;
long long curSum = 0;
int prevIndex(set<pair<int,int>>::iterator it){
if (it == byTin.begin()) return byTin.rbegin()->second;
return prev(it)->second;
}
int nextIndex(set<pair<int,int>>::iterator it){
++it;
if (it == byTin.end()) return byTin.begin()->second;
return it->second;
}
void addVertex(int v){
if (alive[v]) return;
alive[v] = 1;
if (byTin.empty()){
byTin.insert({tin[v], v});
return;
}
auto it = byTin.insert({tin[v], v}).first;
int a = prevIndex(it);
int b = nextIndex(it);
curSum -= maxOnPath(a,b);
curSum += maxOnPath(a,v) + maxOnPath(v,b);
}
void removeVertex(int v){
if (!alive[v]) return;
alive[v] = 0;
if (byTin.size()==1){
byTin.clear();
curSum = 0;
return;
}
auto it = byTin.find({tin[v], v});
int a = prevIndex(it);
int b = nextIndex(it);
curSum -= maxOnPath(a,v) + maxOnPath(v,b);
curSum += maxOnPath(a,b);
byTin.erase(it);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
if(!(cin>>n>>m>>q)) return 0;
vector<Edge> edges(m);
for (int i=0;i<m;i++){
int u,v; long long w;
cin>>u>>v>>w;
edges[i]={u,v,(int)w};
}
// 1) Build MST (assume the original graph is connected)
sort(edges.begin(), edges.end(), [](const Edge& a, const Edge& b){ return a.w < b.w; });
DSU dsu(n);
g.assign(n, {});
for (auto &e: edges){
if (dsu.unite(e.u, e.v)){
g[e.u].push_back({e.v, e.w});
g[e.v].push_back({e.u, e.w});
Wtot += e.w;
}
}
// 2) LCA preprocess
depth_[0]=0;
dfs(0,-1,0);
for (int k=1;k<LOG;k++){
for (int v=0; v<n; v++){
up[k][v] = up[k-1][ up[k-1][v] ];
mx[k][v] = max(mx[k-1][v], mx[k-1][ up[k-1][v] ]);
}
}
// 3) Read queries
vector<Query> qs(q);
B = max(1,(int)sqrt(n));
for (int i=0;i<q;i++){
int L,R; cin>>L>>R;
qs[i] = {L,R,i, L/B};
}
sort(qs.begin(), qs.end(), mo_cmp);
// 4) Mo's algorithm over [L,R] on vertex IDs
vector<long long> ans(q);
alive.assign(n, 0);
int curL = 0, curR = -1;
for (auto &qq: qs){
int L = qq.L, R = qq.R;
while (curL > L) addVertex(--curL);
while (curR < R) addVertex(++curR);
while (curL < L) removeVertex(curL++);
while (curR > R) removeVertex(curR--);
ans[qq.id] = Wtot - (curSum/2);
}
for (int i=0;i<q;i++){
cout << ans[i] << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRFNVIHsKICAgIGludCBuOyB2ZWN0b3I8aW50PiBwLCByOwogICAgRFNVKGludCBuPTApOiBuKG4pLCBwKG4pLCByKG4sMCl7IGlvdGEocC5iZWdpbigpLCBwLmVuZCgpLCAwKTsgfQogICAgaW50IGZpbmQoaW50IHgpeyByZXR1cm4gcFt4XT09eD8geDogcFt4XT1maW5kKHBbeF0pOyB9CiAgICBib29sIHVuaXRlKGludCBhLGludCBiKXsKICAgICAgICBhPWZpbmQoYSk7IGI9ZmluZChiKTsKICAgICAgICBpZihhPT1iKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYoclthXTxyW2JdKSBzd2FwKGEsYik7CiAgICAgICAgcFtiXT1hOyBpZihyW2FdPT1yW2JdKSByW2FdKys7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07CgpzdHJ1Y3QgRWRnZSB7aW50IHUsdjsgaW50IHc7fTsKCmNvbnN0IGludCBMT0cgPSAyMDsgLy8gZW5vdWdoIGZvciBuPD0xZTUKCmludCBuLCBtLCBxOwp2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LGludD4+PiBnOyAvLyBNU1QgYWRqYWNlbmN5OiB0bywgdwpsb25nIGxvbmcgV3RvdCA9IDA7CgppbnQgdXBbTE9HXVsxMDAwMDVdOwppbnQgbXhbTE9HXVsxMDAwMDVdOwppbnQgZGVwdGhfWzEwMDAwNV07CmludCB0aW5bMTAwMDA1XTsKaW50IHRpbWVyXyA9IDA7Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHAsIGludCB3KXsKICAgIHRpblt1XSA9ICsrdGltZXJfOwogICAgdXBbMF1bdV0gPSAocD09LTE/IHUgOiBwKTsKICAgIG14WzBdW3VdID0gKHA9PS0xPyAwIDogdyk7CiAgICBmb3IgKGF1dG8gW3YsY106IGdbdV0pewogICAgICAgIGlmICh2PT1wKSBjb250aW51ZTsKICAgICAgICBkZXB0aF9bdl0gPSBkZXB0aF9bdV0gKyAxOwogICAgICAgIGRmcyh2LHUsYyk7CiAgICB9Cn0KCmludCBtYXhPblBhdGgoaW50IHUsIGludCB2KXsKICAgIGlmICh1PT12KSByZXR1cm4gMDsKICAgIGludCByZXMgPSAwOwogICAgaWYgKGRlcHRoX1t1XSA8IGRlcHRoX1t2XSkgc3dhcCh1LHYpOwogICAgaW50IGQgPSBkZXB0aF9bdV0gLSBkZXB0aF9bdl07CiAgICBmb3IgKGludCBrPUxPRy0xO2s+PTA7LS1rKXsKICAgICAgICBpZiAoZD4+ayAmIDEpewogICAgICAgICAgICByZXMgPSBtYXgocmVzLCBteFtrXVt1XSk7CiAgICAgICAgICAgIHUgPSB1cFtrXVt1XTsKICAgICAgICB9CiAgICB9CiAgICBpZiAodT09dikgcmV0dXJuIHJlczsKICAgIGZvciAoaW50IGs9TE9HLTE7az49MDstLWspewogICAgICAgIGlmICh1cFtrXVt1XSAhPSB1cFtrXVt2XSl7CiAgICAgICAgICAgIHJlcyA9IG1heChyZXMsIG14W2tdW3VdKTsKICAgICAgICAgICAgcmVzID0gbWF4KHJlcywgbXhba11bdl0pOwogICAgICAgICAgICB1ID0gdXBba11bdV07CiAgICAgICAgICAgIHYgPSB1cFtrXVt2XTsKICAgICAgICB9CiAgICB9CiAgICAvLyBub3cgdSBhbmQgdiBhcmUgY2hpbGRyZW4gb2YgTENBCiAgICByZXMgPSBtYXgocmVzLCBteFswXVt1XSk7CiAgICByZXMgPSBtYXgocmVzLCBteFswXVt2XSk7CiAgICByZXR1cm4gcmVzOwp9CgpzdHJ1Y3QgUXVlcnl7CiAgICBpbnQgTCwgUiwgaWQsIGJsb2NrOwp9OwppbnQgQjsgLy8gYmxvY2sgc2l6ZSBmb3IgTW8KCmJvb2wgbW9fY21wKGNvbnN0IFF1ZXJ5JiBhLCBjb25zdCBRdWVyeSYgYil7CiAgICBpZiAoYS5ibG9jayAhPSBiLmJsb2NrKSByZXR1cm4gYS5ibG9jayA8IGIuYmxvY2s7CiAgICBpZiAoYS5ibG9jayAmIDEpIHJldHVybiBhLlIgPiBiLlI7CiAgICByZXR1cm4gYS5SIDwgYi5SOwp9CgpzZXQ8cGFpcjxpbnQsaW50Pj4gYnlUaW47IC8vICh0aW5bdl0sIHYpCnZlY3RvcjxjaGFyPiBhbGl2ZTsKbG9uZyBsb25nIGN1clN1bSA9IDA7CgppbnQgcHJldkluZGV4KHNldDxwYWlyPGludCxpbnQ+Pjo6aXRlcmF0b3IgaXQpewogICAgaWYgKGl0ID09IGJ5VGluLmJlZ2luKCkpIHJldHVybiBieVRpbi5yYmVnaW4oKS0+c2Vjb25kOwogICAgcmV0dXJuIHByZXYoaXQpLT5zZWNvbmQ7Cn0KaW50IG5leHRJbmRleChzZXQ8cGFpcjxpbnQsaW50Pj46Oml0ZXJhdG9yIGl0KXsKICAgICsraXQ7CiAgICBpZiAoaXQgPT0gYnlUaW4uZW5kKCkpIHJldHVybiBieVRpbi5iZWdpbigpLT5zZWNvbmQ7CiAgICByZXR1cm4gaXQtPnNlY29uZDsKfQoKdm9pZCBhZGRWZXJ0ZXgoaW50IHYpewogICAgaWYgKGFsaXZlW3ZdKSByZXR1cm47CiAgICBhbGl2ZVt2XSA9IDE7CiAgICBpZiAoYnlUaW4uZW1wdHkoKSl7CiAgICAgICAgYnlUaW4uaW5zZXJ0KHt0aW5bdl0sIHZ9KTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBhdXRvIGl0ID0gYnlUaW4uaW5zZXJ0KHt0aW5bdl0sIHZ9KS5maXJzdDsKICAgIGludCBhID0gcHJldkluZGV4KGl0KTsKICAgIGludCBiID0gbmV4dEluZGV4KGl0KTsKICAgIGN1clN1bSAtPSBtYXhPblBhdGgoYSxiKTsKICAgIGN1clN1bSArPSBtYXhPblBhdGgoYSx2KSArIG1heE9uUGF0aCh2LGIpOwp9Cgp2b2lkIHJlbW92ZVZlcnRleChpbnQgdil7CiAgICBpZiAoIWFsaXZlW3ZdKSByZXR1cm47CiAgICBhbGl2ZVt2XSA9IDA7CiAgICBpZiAoYnlUaW4uc2l6ZSgpPT0xKXsKICAgICAgICBieVRpbi5jbGVhcigpOwogICAgICAgIGN1clN1bSA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgYXV0byBpdCA9IGJ5VGluLmZpbmQoe3Rpblt2XSwgdn0pOwogICAgaW50IGEgPSBwcmV2SW5kZXgoaXQpOwogICAgaW50IGIgPSBuZXh0SW5kZXgoaXQpOwogICAgY3VyU3VtIC09IG1heE9uUGF0aChhLHYpICsgbWF4T25QYXRoKHYsYik7CiAgICBjdXJTdW0gKz0gbWF4T25QYXRoKGEsYik7CiAgICBieVRpbi5lcmFzZShpdCk7Cn0KCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwoKICAgIGlmKCEoY2luPj5uPj5tPj5xKSkgcmV0dXJuIDA7CgogICAgdmVjdG9yPEVkZ2U+IGVkZ2VzKG0pOwogICAgZm9yIChpbnQgaT0wO2k8bTtpKyspewogICAgICAgIGludCB1LHY7IGxvbmcgbG9uZyB3OwogICAgICAgIGNpbj4+dT4+dj4+dzsKICAgICAgICBlZGdlc1tpXT17dSx2LChpbnQpd307CiAgICB9CgogICAgLy8gMSkgQnVpbGQgTVNUIChhc3N1bWUgdGhlIG9yaWdpbmFsIGdyYXBoIGlzIGNvbm5lY3RlZCkKICAgIHNvcnQoZWRnZXMuYmVnaW4oKSwgZWRnZXMuZW5kKCksIFtdKGNvbnN0IEVkZ2UmIGEsIGNvbnN0IEVkZ2UmIGIpeyByZXR1cm4gYS53IDwgYi53OyB9KTsKICAgIERTVSBkc3Uobik7CiAgICBnLmFzc2lnbihuLCB7fSk7CiAgICBmb3IgKGF1dG8gJmU6IGVkZ2VzKXsKICAgICAgICBpZiAoZHN1LnVuaXRlKGUudSwgZS52KSl7CiAgICAgICAgICAgIGdbZS51XS5wdXNoX2JhY2soe2UudiwgZS53fSk7CiAgICAgICAgICAgIGdbZS52XS5wdXNoX2JhY2soe2UudSwgZS53fSk7CiAgICAgICAgICAgIFd0b3QgKz0gZS53OwogICAgICAgIH0KICAgIH0KCiAgICAvLyAyKSBMQ0EgcHJlcHJvY2VzcwogICAgZGVwdGhfWzBdPTA7CiAgICBkZnMoMCwtMSwwKTsKICAgIGZvciAoaW50IGs9MTtrPExPRztrKyspewogICAgICAgIGZvciAoaW50IHY9MDsgdjxuOyB2KyspewogICAgICAgICAgICB1cFtrXVt2XSA9IHVwW2stMV1bIHVwW2stMV1bdl0gXTsKICAgICAgICAgICAgbXhba11bdl0gPSBtYXgobXhbay0xXVt2XSwgbXhbay0xXVsgdXBbay0xXVt2XSBdKTsKICAgICAgICB9CiAgICB9CgogICAgLy8gMykgUmVhZCBxdWVyaWVzCiAgICB2ZWN0b3I8UXVlcnk+IHFzKHEpOwogICAgQiA9IG1heCgxLChpbnQpc3FydChuKSk7CiAgICBmb3IgKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgaW50IEwsUjsgY2luPj5MPj5SOwogICAgICAgIHFzW2ldID0ge0wsUixpLCBML0J9OwogICAgfQogICAgc29ydChxcy5iZWdpbigpLCBxcy5lbmQoKSwgbW9fY21wKTsKCiAgICAvLyA0KSBNbydzIGFsZ29yaXRobSBvdmVyIFtMLFJdIG9uIHZlcnRleCBJRHMKICAgIHZlY3Rvcjxsb25nIGxvbmc+IGFucyhxKTsKICAgIGFsaXZlLmFzc2lnbihuLCAwKTsKICAgIGludCBjdXJMID0gMCwgY3VyUiA9IC0xOwogICAgZm9yIChhdXRvICZxcTogcXMpewogICAgICAgIGludCBMID0gcXEuTCwgUiA9IHFxLlI7CiAgICAgICAgd2hpbGUgKGN1ckwgPiBMKSBhZGRWZXJ0ZXgoLS1jdXJMKTsKICAgICAgICB3aGlsZSAoY3VyUiA8IFIpIGFkZFZlcnRleCgrK2N1clIpOwogICAgICAgIHdoaWxlIChjdXJMIDwgTCkgcmVtb3ZlVmVydGV4KGN1ckwrKyk7CiAgICAgICAgd2hpbGUgKGN1clIgPiBSKSByZW1vdmVWZXJ0ZXgoY3VyUi0tKTsKICAgICAgICBhbnNbcXEuaWRdID0gV3RvdCAtIChjdXJTdW0vMik7CiAgICB9CgogICAgZm9yIChpbnQgaT0wO2k8cTtpKyspewogICAgICAgIGNvdXQgPDwgYW5zW2ldIDw8ICdcbic7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=