#include <bits/stdc++.h>
using namespace std;
struct DSU {
vector<int> p, r;
DSU(int n=0){ init(n); }
void init(int n){ p.resize(n); r.assign(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; long long w; };
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m, q;
if(!(cin >> n >> m >> q)) return 0;
vector<Edge> E(m);
for(int i=0;i<m;i++){
int u,v; long long w;
cin >> u >> v >> w;
E[i] = {u,v,w};
}
// 1) Kruskal -> MST T
sort(E.begin(), E.end(), [](const Edge& a, const Edge& b){ return a.w < b.w; });
DSU dsu(n);
vector<vector<pair<int,long long>>> g(n); // !!! long long weight
long long W = 0;
int used = 0;
for(const auto &e : E){
if(dsu.unite(e.u, e.v)){
W += e.w;
g[e.u].push_back({e.v, e.w});
g[e.v].push_back({e.u, e.w});
if(++used == n-1) break;
}
}
// giả sử đồ thị ban đầu liên thông
// 2) Euler tour + RMQ cho LCA O(1)
vector<int> tin(n,-1), depth(n,0), parent(n,-1);
vector<long long> dist(n,0);
vector<int> first(n,-1), euler;
euler.reserve(2*n);
int timerTin = 0;
// iterative DFS để tránh stack overflow
vector<pair<int,int>> st; // (v, next_child_idx)
st.push_back({0,0});
parent[0] = -1;
tin[0] = timerTin++;
first[0] = (int)euler.size();
euler.push_back(0);
while(!st.empty()){
int v = st.back().first;
int &i = st.back().second;
if(i < (int)g[v].size()){
auto [to, w] = g[v][i++];
if(to == parent[v]) continue;
parent[to] = v;
depth[to] = depth[v] + 1;
dist[to] = dist[v] + w;
tin[to] = timerTin++;
first[to] = (int)euler.size();
euler.push_back(to);
st.push_back({to,0});
}else{
st.pop_back();
if(!st.empty()){
int p = st.back().first;
euler.push_back(p);
}
}
}
int M = (int)euler.size();
vector<int> lg(M+1,0);
for(int i=2;i<=M;i++) lg[i] = lg[i/2]+1;
int K = lg[M]+1;
vector<vector<int>> stmin(K, vector<int>(M));
stmin[0] = euler;
auto better = [&](int a,int b){ return depth[a] < depth[b] ? a : b; };
for(int k=1;k<K;k++){
int len = 1<<(k-1);
for(int i=0;i + (1<<k) <= M; i++){
stmin[k][i] = better(stmin[k-1][i], stmin[k-1][i+len]);
}
}
auto lca = [&](int u,int v){
int L = first[u], R = first[v];
if(L>R) swap(L,R);
int k = lg[R-L+1];
int a = stmin[k][L];
int b = stmin[k][R-(1<<k)+1];
return better(a,b);
};
auto dist_uv = [&](int u,int v)->long long{
int w = lca(u,v);
return dist[u] + dist[v] - 2LL*dist[w];
};
// 3) Mo trên dãy đỉnh [0..n-1]
struct Query{ int l,r,idx; };
vector<Query> Q(q);
for(int i=0;i<q;i++){
int L,R; cin >> L >> R;
Q[i] = {L,R,i};
}
int B = max(1, (int)sqrt(n));
sort(Q.begin(), Q.end(), [&](const Query& A, const Query& BQ){
int ba = A.l / B, bb = BQ.l / B;
if(ba != bb) return ba < bb;
if(ba & 1) return A.r > BQ.r;
return A.r < BQ.r;
});
set<pair<int,int>> S; // (tin, node)
vector<char> in(n,0);
long long P = 0; // tổng dist giữa các đỉnh kề nhau theo thứ tự tin (chu trình)
auto add_node = [&](int x){
if(in[x]) return;
in[x] = 1;
if(S.empty()){ S.insert({tin[x],x}); return; }
auto it = S.lower_bound({tin[x],x});
auto itNext = (it == S.end() ? S.begin() : it);
auto itPrev = (it == S.begin() ? prev(S.end()) : prev(it));
int a = itPrev->second, b = itNext->second;
P += dist_uv(a,x) + dist_uv(x,b) - dist_uv(a,b);
S.insert({tin[x],x});
};
auto remove_node = [&](int x){
if(!in[x]) return;
in[x] = 0;
if(S.size()==1){ S.clear(); return; }
auto it = S.find({tin[x],x});
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, b = itNext->second;
P -= dist_uv(a,x) + dist_uv(x,b) - dist_uv(a,b);
S.erase(it);
};
vector<long long> ans(q);
int curL = 0, curR = -1;
for(const auto &qq : Q){
while(curL > qq.l) add_node(--curL);
while(curR < qq.r) add_node(++curR);
while(curL < qq.l) remove_node(curL++);
while(curR > qq.r) remove_node(curR--);
ans[qq.idx] = W - P/2; // cây Steiner = P/2
}
for(int i=0;i<q;i++) cout << ans[i] << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgRFNVIHsKICAgIHZlY3RvcjxpbnQ+IHAsIHI7CiAgICBEU1UoaW50IG49MCl7IGluaXQobik7IH0KICAgIHZvaWQgaW5pdChpbnQgbil7IHAucmVzaXplKG4pOyByLmFzc2lnbihuLDApOyBpb3RhKHAuYmVnaW4oKSwgcC5lbmQoKSwgMCk7IH0KICAgIGludCBmaW5kKGludCB4KXsgcmV0dXJuIHBbeF09PXggPyB4IDogcFt4XT1maW5kKHBbeF0pOyB9CiAgICBib29sIHVuaXRlKGludCBhLGludCBiKXsKICAgICAgICBhPWZpbmQoYSk7IGI9ZmluZChiKTsKICAgICAgICBpZihhPT1iKSByZXR1cm4gZmFsc2U7CiAgICAgICAgaWYoclthXTxyW2JdKSBzd2FwKGEsYik7CiAgICAgICAgcFtiXT1hOyBpZihyW2FdPT1yW2JdKSByW2FdKys7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cn07CgpzdHJ1Y3QgRWRnZXsgaW50IHUsdjsgbG9uZyBsb25nIHc7IH07CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgbSwgcTsKICAgIGlmKCEoY2luID4+IG4gPj4gbSA+PiBxKSkgcmV0dXJuIDA7CgogICAgdmVjdG9yPEVkZ2U+IEUobSk7CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICBpbnQgdSx2OyBsb25nIGxvbmcgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgRVtpXSA9IHt1LHYsd307CiAgICB9CgogICAgLy8gMSkgS3J1c2thbCAtPiBNU1QgVAogICAgc29ydChFLmJlZ2luKCksIEUuZW5kKCksIFtdKGNvbnN0IEVkZ2UmIGEsIGNvbnN0IEVkZ2UmIGIpeyByZXR1cm4gYS53IDwgYi53OyB9KTsKICAgIERTVSBkc3Uobik7CiAgICB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LGxvbmcgbG9uZz4+PiBnKG4pOyAgICAgICAgLy8gISEhIGxvbmcgbG9uZyB3ZWlnaHQKICAgIGxvbmcgbG9uZyBXID0gMDsKICAgIGludCB1c2VkID0gMDsKICAgIGZvcihjb25zdCBhdXRvICZlIDogRSl7CiAgICAgICAgaWYoZHN1LnVuaXRlKGUudSwgZS52KSl7CiAgICAgICAgICAgIFcgKz0gZS53OwogICAgICAgICAgICBnW2UudV0ucHVzaF9iYWNrKHtlLnYsIGUud30pOwogICAgICAgICAgICBnW2Uudl0ucHVzaF9iYWNrKHtlLnUsIGUud30pOwogICAgICAgICAgICBpZigrK3VzZWQgPT0gbi0xKSBicmVhazsKICAgICAgICB9CiAgICB9CiAgICAvLyBnaeG6oyBz4butIMSR4buTIHRo4buLIGJhbiDEkeG6p3UgbGnDqm4gdGjDtG5nCgogICAgLy8gMikgRXVsZXIgdG91ciArIFJNUSBjaG8gTENBIE8oMSkKICAgIHZlY3RvcjxpbnQ+IHRpbihuLC0xKSwgZGVwdGgobiwwKSwgcGFyZW50KG4sLTEpOwogICAgdmVjdG9yPGxvbmcgbG9uZz4gZGlzdChuLDApOwogICAgdmVjdG9yPGludD4gZmlyc3QobiwtMSksIGV1bGVyOwogICAgZXVsZXIucmVzZXJ2ZSgyKm4pOwoKICAgIGludCB0aW1lclRpbiA9IDA7CgogICAgLy8gaXRlcmF0aXZlIERGUyDEkeG7gyB0csOhbmggc3RhY2sgb3ZlcmZsb3cKICAgIHZlY3RvcjxwYWlyPGludCxpbnQ+PiBzdDsgLy8gKHYsIG5leHRfY2hpbGRfaWR4KQogICAgc3QucHVzaF9iYWNrKHswLDB9KTsKICAgIHBhcmVudFswXSA9IC0xOwogICAgdGluWzBdID0gdGltZXJUaW4rKzsKICAgIGZpcnN0WzBdID0gKGludClldWxlci5zaXplKCk7CiAgICBldWxlci5wdXNoX2JhY2soMCk7CgogICAgd2hpbGUoIXN0LmVtcHR5KCkpewogICAgICAgIGludCB2ID0gc3QuYmFjaygpLmZpcnN0OwogICAgICAgIGludCAmaSA9IHN0LmJhY2soKS5zZWNvbmQ7CiAgICAgICAgaWYoaSA8IChpbnQpZ1t2XS5zaXplKCkpewogICAgICAgICAgICBhdXRvIFt0bywgd10gPSBnW3ZdW2krK107CiAgICAgICAgICAgIGlmKHRvID09IHBhcmVudFt2XSkgY29udGludWU7CiAgICAgICAgICAgIHBhcmVudFt0b10gPSB2OwogICAgICAgICAgICBkZXB0aFt0b10gPSBkZXB0aFt2XSArIDE7CiAgICAgICAgICAgIGRpc3RbdG9dICA9IGRpc3Rbdl0gKyB3OwogICAgICAgICAgICB0aW5bdG9dICAgPSB0aW1lclRpbisrOwogICAgICAgICAgICBmaXJzdFt0b10gPSAoaW50KWV1bGVyLnNpemUoKTsKICAgICAgICAgICAgZXVsZXIucHVzaF9iYWNrKHRvKTsKICAgICAgICAgICAgc3QucHVzaF9iYWNrKHt0bywwfSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIHN0LnBvcF9iYWNrKCk7CiAgICAgICAgICAgIGlmKCFzdC5lbXB0eSgpKXsKICAgICAgICAgICAgICAgIGludCBwID0gc3QuYmFjaygpLmZpcnN0OwogICAgICAgICAgICAgICAgZXVsZXIucHVzaF9iYWNrKHApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGludCBNID0gKGludClldWxlci5zaXplKCk7CiAgICB2ZWN0b3I8aW50PiBsZyhNKzEsMCk7CiAgICBmb3IoaW50IGk9MjtpPD1NO2krKykgbGdbaV0gPSBsZ1tpLzJdKzE7CiAgICBpbnQgSyA9IGxnW01dKzE7CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBzdG1pbihLLCB2ZWN0b3I8aW50PihNKSk7CiAgICBzdG1pblswXSA9IGV1bGVyOwogICAgYXV0byBiZXR0ZXIgPSBbJl0oaW50IGEsaW50IGIpeyByZXR1cm4gZGVwdGhbYV0gPCBkZXB0aFtiXSA/IGEgOiBiOyB9OwogICAgZm9yKGludCBrPTE7azxLO2srKyl7CiAgICAgICAgaW50IGxlbiA9IDE8PChrLTEpOwogICAgICAgIGZvcihpbnQgaT0wO2kgKyAoMTw8aykgPD0gTTsgaSsrKXsKICAgICAgICAgICAgc3RtaW5ba11baV0gPSBiZXR0ZXIoc3RtaW5bay0xXVtpXSwgc3RtaW5bay0xXVtpK2xlbl0pOwogICAgICAgIH0KICAgIH0KICAgIGF1dG8gbGNhID0gWyZdKGludCB1LGludCB2KXsKICAgICAgICBpbnQgTCA9IGZpcnN0W3VdLCBSID0gZmlyc3Rbdl07CiAgICAgICAgaWYoTD5SKSBzd2FwKEwsUik7CiAgICAgICAgaW50IGsgPSBsZ1tSLUwrMV07CiAgICAgICAgaW50IGEgPSBzdG1pbltrXVtMXTsKICAgICAgICBpbnQgYiA9IHN0bWluW2tdW1ItKDE8PGspKzFdOwogICAgICAgIHJldHVybiBiZXR0ZXIoYSxiKTsKICAgIH07CiAgICBhdXRvIGRpc3RfdXYgPSBbJl0oaW50IHUsaW50IHYpLT5sb25nIGxvbmd7CiAgICAgICAgaW50IHcgPSBsY2EodSx2KTsKICAgICAgICByZXR1cm4gZGlzdFt1XSArIGRpc3Rbdl0gLSAyTEwqZGlzdFt3XTsKICAgIH07CgogICAgLy8gMykgTW8gdHLDqm4gZMOjeSDEkeG7iW5oIFswLi5uLTFdCiAgICBzdHJ1Y3QgUXVlcnl7IGludCBsLHIsaWR4OyB9OwogICAgdmVjdG9yPFF1ZXJ5PiBRKHEpOwogICAgZm9yKGludCBpPTA7aTxxO2krKyl7CiAgICAgICAgaW50IEwsUjsgY2luID4+IEwgPj4gUjsKICAgICAgICBRW2ldID0ge0wsUixpfTsKICAgIH0KICAgIGludCBCID0gbWF4KDEsIChpbnQpc3FydChuKSk7CiAgICBzb3J0KFEuYmVnaW4oKSwgUS5lbmQoKSwgWyZdKGNvbnN0IFF1ZXJ5JiBBLCBjb25zdCBRdWVyeSYgQlEpewogICAgICAgIGludCBiYSA9IEEubCAvIEIsIGJiID0gQlEubCAvIEI7CiAgICAgICAgaWYoYmEgIT0gYmIpIHJldHVybiBiYSA8IGJiOwogICAgICAgIGlmKGJhICYgMSkgcmV0dXJuIEEuciA+IEJRLnI7CiAgICAgICAgcmV0dXJuIEEuciA8IEJRLnI7CiAgICB9KTsKCiAgICBzZXQ8cGFpcjxpbnQsaW50Pj4gUzsgLy8gKHRpbiwgbm9kZSkKICAgIHZlY3RvcjxjaGFyPiBpbihuLDApOwogICAgbG9uZyBsb25nIFAgPSAwOyAgICAgIC8vIHThu5VuZyBkaXN0IGdp4buvYSBjw6FjIMSR4buJbmgga+G7gSBuaGF1IHRoZW8gdGjhu6kgdOG7sSB0aW4gKGNodSB0csOsbmgpCgogICAgYXV0byBhZGRfbm9kZSA9IFsmXShpbnQgeCl7CiAgICAgICAgaWYoaW5beF0pIHJldHVybjsKICAgICAgICBpblt4XSA9IDE7CiAgICAgICAgaWYoUy5lbXB0eSgpKXsgUy5pbnNlcnQoe3Rpblt4XSx4fSk7IHJldHVybjsgfQogICAgICAgIGF1dG8gaXQgPSBTLmxvd2VyX2JvdW5kKHt0aW5beF0seH0pOwogICAgICAgIGF1dG8gaXROZXh0ID0gKGl0ID09IFMuZW5kKCkgPyBTLmJlZ2luKCkgOiBpdCk7CiAgICAgICAgYXV0byBpdFByZXYgPSAoaXQgPT0gUy5iZWdpbigpID8gcHJldihTLmVuZCgpKSA6IHByZXYoaXQpKTsKICAgICAgICBpbnQgYSA9IGl0UHJldi0+c2Vjb25kLCBiID0gaXROZXh0LT5zZWNvbmQ7CiAgICAgICAgUCArPSBkaXN0X3V2KGEseCkgKyBkaXN0X3V2KHgsYikgLSBkaXN0X3V2KGEsYik7CiAgICAgICAgUy5pbnNlcnQoe3Rpblt4XSx4fSk7CiAgICB9OwogICAgYXV0byByZW1vdmVfbm9kZSA9IFsmXShpbnQgeCl7CiAgICAgICAgaWYoIWluW3hdKSByZXR1cm47CiAgICAgICAgaW5beF0gPSAwOwogICAgICAgIGlmKFMuc2l6ZSgpPT0xKXsgUy5jbGVhcigpOyByZXR1cm47IH0KICAgICAgICBhdXRvIGl0ID0gUy5maW5kKHt0aW5beF0seH0pOwogICAgICAgIGF1dG8gaXROZXh0ID0gbmV4dChpdCk7IGlmKGl0TmV4dD09Uy5lbmQoKSkgaXROZXh0ID0gUy5iZWdpbigpOwogICAgICAgIGF1dG8gaXRQcmV2ID0gKGl0PT1TLmJlZ2luKCk/IHByZXYoUy5lbmQoKSkgOiBwcmV2KGl0KSk7CiAgICAgICAgaW50IGEgPSBpdFByZXYtPnNlY29uZCwgYiA9IGl0TmV4dC0+c2Vjb25kOwogICAgICAgIFAgLT0gZGlzdF91dihhLHgpICsgZGlzdF91dih4LGIpIC0gZGlzdF91dihhLGIpOwogICAgICAgIFMuZXJhc2UoaXQpOwogICAgfTsKCiAgICB2ZWN0b3I8bG9uZyBsb25nPiBhbnMocSk7CiAgICBpbnQgY3VyTCA9IDAsIGN1clIgPSAtMTsKICAgIGZvcihjb25zdCBhdXRvICZxcSA6IFEpewogICAgICAgIHdoaWxlKGN1ckwgPiBxcS5sKSBhZGRfbm9kZSgtLWN1ckwpOwogICAgICAgIHdoaWxlKGN1clIgPCBxcS5yKSBhZGRfbm9kZSgrK2N1clIpOwogICAgICAgIHdoaWxlKGN1ckwgPCBxcS5sKSByZW1vdmVfbm9kZShjdXJMKyspOwogICAgICAgIHdoaWxlKGN1clIgPiBxcS5yKSByZW1vdmVfbm9kZShjdXJSLS0pOwogICAgICAgIGFuc1txcS5pZHhdID0gVyAtIFAvMjsgLy8gY8OieSBTdGVpbmVyID0gUC8yCiAgICB9CgogICAgZm9yKGludCBpPTA7aTxxO2krKykgY291dCA8PCBhbnNbaV0gPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9Cg==