#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;
}
};
const int MAXN = 200000 + 5; // just a soft cap; we will use vectors anyway
int n, m, q;
vector<vector<pair<int,long long>>> g; // MST adjacency
long long W_MST = 0;
// LCA
int LOGN;
vector<int> tin, tout, depth;
vector<vector<int>> up;
vector<long long> distRoot;
int timerDFS = 0;
void dfs(int u, int p){
tin[u] = ++timerDFS;
up[u][0] = (p==-1?u:p);
for(int j=1;j<LOGN;j++) up[u][j] = up[ up[u][j-1] ][j-1];
for(auto [v,w] : g[u]){
if(v==p) continue;
depth[v] = depth[u] + 1;
distRoot[v] = distRoot[u] + w;
dfs(v,u);
}
tout[u] = ++timerDFS;
}
bool is_anc(int u,int v){ // u is ancestor of v?
return tin[u]<=tin[v] && tout[v]<=tout[u];
}
int lca(int u,int v){
if(is_anc(u,v)) return u;
if(is_anc(v,u)) return v;
for(int j=LOGN-1;j>=0;j--){
int uu = up[u][j];
if(!is_anc(uu,v)) u = uu;
}
return up[u][0];
}
inline long long dist_uv(int u,int v){
int w = lca(u,v);
return distRoot[u] + distRoot[v] - 2LL*distRoot[w];
}
// Mo's
struct Query{
int L, R, idx, block;
};
int B;
struct ByMo {
bool operator()(const Query& a, const Query& b) const {
if(a.block != b.block) return a.block < b.block;
if(a.block & 1) return a.R > b.R;
return a.R < b.R;
}
};
// ordered set over Euler time
set<pair<int,int>> S; // (tin[u], u)
vector<int> inSet;
long long sumDist = 0;
inline void add_contrib(int a,int b, long long sign){ // sign = +1 or -1
if(a==b) return;
sumDist += sign * dist_uv(a,b);
}
void insert_vertex(int u){
if(S.empty()){
S.insert({tin[u], u});
inSet[u]=1;
return;
}
auto key = make_pair(tin[u], u);
auto it = S.lower_bound(key);
auto itNext = (it == S.end() ? S.begin() : it);
auto itPrev = (it == S.begin() ? prev(S.end()) : prev(it));
int a = itPrev->second;
int b = itNext->second;
// add dist(a,u) + dist(u,b) - dist(a,b)
add_contrib(a, u, +1);
add_contrib(u, b, +1);
add_contrib(a, b, -1);
S.insert(key);
inSet[u]=1;
}
void erase_vertex(int u){
if(S.size()==1){
S.erase({tin[u],u});
inSet[u]=0;
return;
}
auto it = S.find({tin[u],u});
auto itNext = next(it); if(itNext==S.end()) itNext = S.begin();
auto itPrev = (it==S.begin() ? prev(S.end()) : prev(it));
int a = itPrev->second;
int b = itNext->second;
// remove dist(a,u) + dist(u,b) - dist(a,b)
add_contrib(a, u, -1);
add_contrib(u, b, -1);
add_contrib(a, b, +1);
S.erase(it);
inSet[u]=0;
}
inline void add_pos(int x){ if(!inSet[x]) insert_vertex(x); }
inline void rem_pos(int x){ if(inSet[x]) erase_vertex(x); }
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
if(!(cin>>n>>m>>q)) return 0;
struct Edge{int u,v; long long w;};
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,w};
}
// Kruskal -> MST
sort(edges.begin(), edges.end(), [](const Edge& a, const Edge& b){
return a.w < b.w;
});
DSU dsu(n);
g.assign(n, {});
int cnt=0;
for(auto &e: edges){
if(dsu.unite(e.u, e.v)){
W_MST += e.w;
g[e.u].push_back({e.v, e.w});
g[e.v].push_back({e.u, e.w});
cnt++;
if(cnt==n-1) break;
}
}
// (Nếu đồ thị không liên thông, phần lớn đề đảm bảo không xảy ra)
// LCA precompute
LOGN = 1;
while((1<<LOGN) <= n) LOGN++;
tin.assign(n,0); tout.assign(n,0); depth.assign(n,0);
up.assign(n, vector<int>(LOGN));
distRoot.assign(n,0);
dfs(0,-1);
// Read queries
vector<Query> Q(q);
B = max(1, (int)(sqrt(n) + 1));
for(int i=0;i<q;i++){
int L,R; cin>>L>>R;
Q[i] = {L, R, i, L / B};
}
sort(Q.begin(), Q.end(), ByMo());
inSet.assign(n, 0);
long long curSum = 0;
sumDist = 0;
S.clear();
vector<long long> ans(q, 0);
int curL = 0, curR = -1;
for(auto &qq: Q){
while(curL > qq.L){ --curL; add_pos(curL); }
while(curR < qq.R){ ++curR; add_pos(curR); }
while(curL < qq.L){ rem_pos(curL); ++curL; }
while(curR > qq.R){ rem_pos(curR); --curR; }
long long virtLen = sumDist / 2; // length of virtual tree covering [L..R]
ans[qq.idx] = W_MST - virtLen;
}
for(int i=0;i<q;i++){
cout << ans[i] << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRFNVIHsKICAgIGludCBuOwogICAgdmVjdG9yPGludD4gcCwgcjsKICAgIERTVShpbnQgbj0wKTogbihuKSwgcChuKSwgcihuLDApIHsgaW90YShwLmJlZ2luKCksIHAuZW5kKCksIDApOyB9CiAgICBpbnQgZmluZChpbnQgeCl7IHJldHVybiBwW3hdPT14P3g6cFt4XT1maW5kKHBbeF0pOyB9CiAgICBib29sIHVuaXRlKGludCBhLGludCBiKXsKICAgICAgICBhPWZpbmQoYSk7IGI9ZmluZChiKTsKICAgICAgICBpZihhPT1iKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYoclthXTxyW2JdKSBzd2FwKGEsYik7CiAgICAgICAgcFtiXT1hOyBpZihyW2FdPT1yW2JdKSByW2FdKys7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07Cgpjb25zdCBpbnQgTUFYTiA9IDIwMDAwMCArIDU7IC8vIGp1c3QgYSBzb2Z0IGNhcDsgd2Ugd2lsbCB1c2UgdmVjdG9ycyBhbnl3YXkKCmludCBuLCBtLCBxOwoKdmVjdG9yPHZlY3RvcjxwYWlyPGludCxsb25nIGxvbmc+Pj4gZzsgLy8gTVNUIGFkamFjZW5jeQpsb25nIGxvbmcgV19NU1QgPSAwOwoKLy8gTENBCmludCBMT0dOOwp2ZWN0b3I8aW50PiB0aW4sIHRvdXQsIGRlcHRoOwp2ZWN0b3I8dmVjdG9yPGludD4+IHVwOwp2ZWN0b3I8bG9uZyBsb25nPiBkaXN0Um9vdDsKaW50IHRpbWVyREZTID0gMDsKCnZvaWQgZGZzKGludCB1LCBpbnQgcCl7CiAgICB0aW5bdV0gPSArK3RpbWVyREZTOwogICAgdXBbdV1bMF0gPSAocD09LTE/dTpwKTsKICAgIGZvcihpbnQgaj0xO2o8TE9HTjtqKyspIHVwW3VdW2pdID0gdXBbIHVwW3VdW2otMV0gXVtqLTFdOwogICAgZm9yKGF1dG8gW3Ysd10gOiBnW3VdKXsKICAgICAgICBpZih2PT1wKSBjb250aW51ZTsKICAgICAgICBkZXB0aFt2XSA9IGRlcHRoW3VdICsgMTsKICAgICAgICBkaXN0Um9vdFt2XSA9IGRpc3RSb290W3VdICsgdzsKICAgICAgICBkZnModix1KTsKICAgIH0KICAgIHRvdXRbdV0gPSArK3RpbWVyREZTOwp9CmJvb2wgaXNfYW5jKGludCB1LGludCB2KXsgLy8gdSBpcyBhbmNlc3RvciBvZiB2PwogICAgcmV0dXJuIHRpblt1XTw9dGluW3ZdICYmIHRvdXRbdl08PXRvdXRbdV07Cn0KaW50IGxjYShpbnQgdSxpbnQgdil7CiAgICBpZihpc19hbmModSx2KSkgcmV0dXJuIHU7CiAgICBpZihpc19hbmModix1KSkgcmV0dXJuIHY7CiAgICBmb3IoaW50IGo9TE9HTi0xO2o+PTA7ai0tKXsKICAgICAgICBpbnQgdXUgPSB1cFt1XVtqXTsKICAgICAgICBpZighaXNfYW5jKHV1LHYpKSB1ID0gdXU7CiAgICB9CiAgICByZXR1cm4gdXBbdV1bMF07Cn0KaW5saW5lIGxvbmcgbG9uZyBkaXN0X3V2KGludCB1LGludCB2KXsKICAgIGludCB3ID0gbGNhKHUsdik7CiAgICByZXR1cm4gZGlzdFJvb3RbdV0gKyBkaXN0Um9vdFt2XSAtIDJMTCpkaXN0Um9vdFt3XTsKfQoKLy8gTW8ncwpzdHJ1Y3QgUXVlcnl7CiAgICBpbnQgTCwgUiwgaWR4LCBibG9jazsKfTsKaW50IEI7CgpzdHJ1Y3QgQnlNbyB7CiAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgUXVlcnkmIGEsIGNvbnN0IFF1ZXJ5JiBiKSBjb25zdCB7CiAgICAgICAgaWYoYS5ibG9jayAhPSBiLmJsb2NrKSByZXR1cm4gYS5ibG9jayA8IGIuYmxvY2s7CiAgICAgICAgaWYoYS5ibG9jayAmIDEpIHJldHVybiBhLlIgPiBiLlI7CiAgICAgICAgcmV0dXJuIGEuUiA8IGIuUjsKICAgIH0KfTsKCi8vIG9yZGVyZWQgc2V0IG92ZXIgRXVsZXIgdGltZQpzZXQ8cGFpcjxpbnQsaW50Pj4gUzsgLy8gKHRpblt1XSwgdSkKdmVjdG9yPGludD4gaW5TZXQ7CmxvbmcgbG9uZyBzdW1EaXN0ID0gMDsKCmlubGluZSB2b2lkIGFkZF9jb250cmliKGludCBhLGludCBiLCBsb25nIGxvbmcgc2lnbil7IC8vIHNpZ24gPSArMSBvciAtMQogICAgaWYoYT09YikgcmV0dXJuOwogICAgc3VtRGlzdCArPSBzaWduICogZGlzdF91dihhLGIpOwp9Cgp2b2lkIGluc2VydF92ZXJ0ZXgoaW50IHUpewogICAgaWYoUy5lbXB0eSgpKXsKICAgICAgICBTLmluc2VydCh7dGluW3VdLCB1fSk7CiAgICAgICAgaW5TZXRbdV09MTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBhdXRvIGtleSA9IG1ha2VfcGFpcih0aW5bdV0sIHUpOwogICAgYXV0byBpdCA9IFMubG93ZXJfYm91bmQoa2V5KTsKICAgIGF1dG8gaXROZXh0ID0gKGl0ID09IFMuZW5kKCkgPyBTLmJlZ2luKCkgOiBpdCk7CiAgICBhdXRvIGl0UHJldiA9IChpdCA9PSBTLmJlZ2luKCkgPyBwcmV2KFMuZW5kKCkpIDogcHJldihpdCkpOwogICAgaW50IGEgPSBpdFByZXYtPnNlY29uZDsKICAgIGludCBiID0gaXROZXh0LT5zZWNvbmQ7CiAgICAvLyBhZGQgZGlzdChhLHUpICsgZGlzdCh1LGIpIC0gZGlzdChhLGIpCiAgICBhZGRfY29udHJpYihhLCB1LCArMSk7CiAgICBhZGRfY29udHJpYih1LCBiLCArMSk7CiAgICBhZGRfY29udHJpYihhLCBiLCAtMSk7CiAgICBTLmluc2VydChrZXkpOwogICAgaW5TZXRbdV09MTsKfQoKdm9pZCBlcmFzZV92ZXJ0ZXgoaW50IHUpewogICAgaWYoUy5zaXplKCk9PTEpewogICAgICAgIFMuZXJhc2Uoe3Rpblt1XSx1fSk7CiAgICAgICAgaW5TZXRbdV09MDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBhdXRvIGl0ID0gUy5maW5kKHt0aW5bdV0sdX0pOwogICAgYXV0byBpdE5leHQgPSBuZXh0KGl0KTsgaWYoaXROZXh0PT1TLmVuZCgpKSBpdE5leHQgPSBTLmJlZ2luKCk7CiAgICBhdXRvIGl0UHJldiA9IChpdD09Uy5iZWdpbigpID8gcHJldihTLmVuZCgpKSA6IHByZXYoaXQpKTsKICAgIGludCBhID0gaXRQcmV2LT5zZWNvbmQ7CiAgICBpbnQgYiA9IGl0TmV4dC0+c2Vjb25kOwogICAgLy8gcmVtb3ZlIGRpc3QoYSx1KSArIGRpc3QodSxiKSAtIGRpc3QoYSxiKQogICAgYWRkX2NvbnRyaWIoYSwgdSwgLTEpOwogICAgYWRkX2NvbnRyaWIodSwgYiwgLTEpOwogICAgYWRkX2NvbnRyaWIoYSwgYiwgKzEpOwogICAgUy5lcmFzZShpdCk7CiAgICBpblNldFt1XT0wOwp9CgppbmxpbmUgdm9pZCBhZGRfcG9zKGludCB4KXsgaWYoIWluU2V0W3hdKSBpbnNlcnRfdmVydGV4KHgpOyB9CmlubGluZSB2b2lkIHJlbV9wb3MoaW50IHgpeyBpZihpblNldFt4XSkgZXJhc2VfdmVydGV4KHgpOyB9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpZighKGNpbj4+bj4+bT4+cSkpIHJldHVybiAwOwoKICAgIHN0cnVjdCBFZGdle2ludCB1LHY7IGxvbmcgbG9uZyB3O307CiAgICB2ZWN0b3I8RWRnZT4gZWRnZXMobSk7CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICBpbnQgdSx2OyBsb25nIGxvbmcgdzsKICAgICAgICBjaW4+PnU+PnY+Pnc7CiAgICAgICAgZWRnZXNbaV09e3Usdix3fTsKICAgIH0KCiAgICAvLyBLcnVza2FsIC0+IE1TVAogICAgc29ydChlZGdlcy5iZWdpbigpLCBlZGdlcy5lbmQoKSwgW10oY29uc3QgRWRnZSYgYSwgY29uc3QgRWRnZSYgYil7CiAgICAgICAgcmV0dXJuIGEudyA8IGIudzsKICAgIH0pOwogICAgRFNVIGRzdShuKTsKICAgIGcuYXNzaWduKG4sIHt9KTsKICAgIGludCBjbnQ9MDsKICAgIGZvcihhdXRvICZlOiBlZGdlcyl7CiAgICAgICAgaWYoZHN1LnVuaXRlKGUudSwgZS52KSl7CiAgICAgICAgICAgIFdfTVNUICs9IGUudzsKICAgICAgICAgICAgZ1tlLnVdLnB1c2hfYmFjayh7ZS52LCBlLnd9KTsKICAgICAgICAgICAgZ1tlLnZdLnB1c2hfYmFjayh7ZS51LCBlLnd9KTsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIGlmKGNudD09bi0xKSBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAvLyAoTuG6v3UgxJHhu5MgdGjhu4sga2jDtG5nIGxpw6puIHRow7RuZywgcGjhuqduIGzhu5tuIMSR4buBIMSR4bqjbSBi4bqjbyBraMO0bmcgeOG6o3kgcmEpCgogICAgLy8gTENBIHByZWNvbXB1dGUKICAgIExPR04gPSAxOwogICAgd2hpbGUoKDE8PExPR04pIDw9IG4pIExPR04rKzsKICAgIHRpbi5hc3NpZ24obiwwKTsgdG91dC5hc3NpZ24obiwwKTsgZGVwdGguYXNzaWduKG4sMCk7CiAgICB1cC5hc3NpZ24obiwgdmVjdG9yPGludD4oTE9HTikpOwogICAgZGlzdFJvb3QuYXNzaWduKG4sMCk7CgogICAgZGZzKDAsLTEpOwoKICAgIC8vIFJlYWQgcXVlcmllcwogICAgdmVjdG9yPFF1ZXJ5PiBRKHEpOwogICAgQiA9IG1heCgxLCAoaW50KShzcXJ0KG4pICsgMSkpOwogICAgZm9yKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgaW50IEwsUjsgY2luPj5MPj5SOwogICAgICAgIFFbaV0gPSB7TCwgUiwgaSwgTCAvIEJ9OwogICAgfQogICAgc29ydChRLmJlZ2luKCksIFEuZW5kKCksIEJ5TW8oKSk7CgogICAgaW5TZXQuYXNzaWduKG4sIDApOwogICAgbG9uZyBsb25nIGN1clN1bSA9IDA7CiAgICBzdW1EaXN0ID0gMDsKICAgIFMuY2xlYXIoKTsKCiAgICB2ZWN0b3I8bG9uZyBsb25nPiBhbnMocSwgMCk7CgogICAgaW50IGN1ckwgPSAwLCBjdXJSID0gLTE7CiAgICBmb3IoYXV0byAmcXE6IFEpewogICAgICAgIHdoaWxlKGN1ckwgPiBxcS5MKXsgLS1jdXJMOyBhZGRfcG9zKGN1ckwpOyB9CiAgICAgICAgd2hpbGUoY3VyUiA8IHFxLlIpeyArK2N1clI7IGFkZF9wb3MoY3VyUik7IH0KICAgICAgICB3aGlsZShjdXJMIDwgcXEuTCl7IHJlbV9wb3MoY3VyTCk7ICsrY3VyTDsgfQogICAgICAgIHdoaWxlKGN1clIgPiBxcS5SKXsgcmVtX3BvcyhjdXJSKTsgLS1jdXJSOyB9CgogICAgICAgIGxvbmcgbG9uZyB2aXJ0TGVuID0gc3VtRGlzdCAvIDI7IC8vIGxlbmd0aCBvZiB2aXJ0dWFsIHRyZWUgY292ZXJpbmcgW0wuLlJdCiAgICAgICAgYW5zW3FxLmlkeF0gPSBXX01TVCAtIHZpcnRMZW47CiAgICB9CgogICAgZm9yKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgY291dCA8PCBhbnNbaV0gPDwgIlxuIjsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==