#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define int long long
#define pii pair<int,int>
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define FOR(i, a, b) for(int i = (a), _b = (b); i <= _b; i++)
#define REP(i, a, b) for(int i = (a), _b = (b); i >= _b; i--)
using namespace std;
const int INF = (int)1e18 + 462010;
const int MAX_VOR = 2e5;
const int MAX_M = 2e5;
const int MAX_N = 1e5;
const int LOG = 18;
struct Disjoint_Set_Union{
int leader[MAX_VOR + 5];
void build(int n){
FOR(i, 1, n) leader[i] = i;
}
int get(int u){
if(u == leader[u]) return u;
return leader[u] = get(leader[u]);
}
void unite(int u, int v){
int x = get(u), y = get(v);
if(x == y) return;
leader[x] = leader[y];
}
}dsu;
struct Edge{
int u, v, w;
bool operator < (const Edge &other) const{
return w > other.w;
}
};
struct Query{
int l, r, t, id;
bool operator < (const Query &other) const{
return t < other.t;
}
};
vector<int> adj[MAX_VOR + 5];
int val[MAX_VOR + 5];
int vor;
Query queries[MAX_M + 5];
int ans[MAX_M + 5];
Edge edges[MAX_M + 5];
pii a[MAX_N + 5];
int n, m, q;
struct Fenwick_Tree{
int tree[MAX_N + 5];
void update(int pos, int val){
for(int i = pos; i <= n; i += i & -i) tree[i] += val;
}
int get(int pos){
int res = 0;
for(int i = pos; i >= 1; i -= i & -i) res += tree[i];
return res;
}
int query(int l, int r){
return get(r) - get(l - 1);
}
}fen;
void Input(){
cin >> n >> m >> q;
FOR(i, 1, m){
int u, v, w;
cin >> u >> v >> w;
edges[i] = {u, v, w};
}
FOR(i, 1, n){
cin >> a[i].fi;
a[i].sec = i;
}
sort(a + 1, a + n + 1);
}
void kruskal(){
sort(edges + 1, edges + m + 1);
dsu.build(MAX_VOR);
vor = n;
FOR(i, 1, m){
int u = edges[i].u, v = edges[i].v;
int w = edges[i].w;
int x = dsu.get(u), y = dsu.get(v);
if(x != y){
++vor;
val[vor] = w;
adj[vor].pb(x);
adj[vor].pb(y);
dsu.unite(x, vor);
dsu.unite(y, vor);
}
}
}
namespace LCA{
int par[LOG + 5][MAX_VOR + 5], depth[MAX_VOR + 5];
int L[MAX_VOR + 5], R[MAX_VOR + 5], timer;
void dfs_lca(int u, int dad){
if(u <= n) L[u] = R[u] = ++timer;
else L[u] = INF, R[u] = -INF;
for(int v : adj[u]) if(v != dad){
depth[v] = depth[u] + 1;
par[0][v] = u;
dfs_lca(v, u);
L[u] = min(L[u], L[v]);
R[u] = max(R[u], R[v]);
}
}
void build_lca(int n){
REP(u, n, 1) if(!depth[u]){
dfs_lca(u, 0);
}
FOR(j, 1, LOG) FOR(i, 1, n){
par[j][i] = par[j - 1][par[j - 1][i]];
}
}
pii get_LR(int u, int w){
REP(j, LOG, 0) if(val[par[j][u]] >= w){
u = par[j][u];
}
return {L[u], R[u]};
}
} using namespace LCA;
void Prepare(){
kruskal();
build_lca(vor);
}
void Solve(){
FOR(i, 1, q){
int u, w, t;
cin >> u >> w >> t;
pii cur = get_LR(u, w);
queries[i] = {cur.fi, cur.sec, t, i};
}
sort(queries + 1, queries + q + 1);
for(int i = 1, j = 1; i <= q; i++){
int l = queries[i].l, r = queries[i].r;
int t = queries[i].t, id = queries[i].id;
while(j <= n && a[j].fi <= t) fen.update(L[a[j++].sec], +1);
ans[id] = fen.query(l, r);
}
FOR(i, 1, q) cout << ans[i] << el;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Prepare();
Solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCiNkZWZpbmUgRk9SKGksIGEsIGIpIGZvcihpbnQgaSA9IChhKSwgX2IgPSAoYik7IGkgPD0gX2I7IGkrKykKI2RlZmluZSBSRVAoaSwgYSwgYikgZm9yKGludCBpID0gKGEpLCBfYiA9IChiKTsgaSA+PSBfYjsgaS0tKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBJTkYgPSAoaW50KTFlMTggKyA0NjIwMTA7CmNvbnN0IGludCBNQVhfVk9SID0gMmU1Owpjb25zdCBpbnQgTUFYX00gPSAyZTU7CmNvbnN0IGludCBNQVhfTiA9IDFlNTsKY29uc3QgaW50IExPRyA9IDE4OwoKc3RydWN0IERpc2pvaW50X1NldF9VbmlvbnsKICAgIGludCBsZWFkZXJbTUFYX1ZPUiArIDVdOwoKICAgIHZvaWQgYnVpbGQoaW50IG4pewogICAgICAgIEZPUihpLCAxLCBuKSBsZWFkZXJbaV0gPSBpOwogICAgfQoKICAgIGludCBnZXQoaW50IHUpewogICAgICAgIGlmKHUgPT0gbGVhZGVyW3VdKSByZXR1cm4gdTsKICAgICAgICByZXR1cm4gbGVhZGVyW3VdID0gZ2V0KGxlYWRlclt1XSk7CiAgICB9CgogICAgdm9pZCB1bml0ZShpbnQgdSwgaW50IHYpewogICAgICAgIGludCB4ID0gZ2V0KHUpLCB5ID0gZ2V0KHYpOwogICAgICAgIGlmKHggPT0geSkgcmV0dXJuOwoKICAgICAgICBsZWFkZXJbeF0gPSBsZWFkZXJbeV07CiAgICB9Cn1kc3U7CgpzdHJ1Y3QgRWRnZXsKICAgIGludCB1LCB2LCB3OwoKICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgRWRnZSAmb3RoZXIpIGNvbnN0ewogICAgICAgIHJldHVybiB3ID4gb3RoZXIudzsKICAgIH0KfTsKCnN0cnVjdCBRdWVyeXsKICAgIGludCBsLCByLCB0LCBpZDsKCiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFF1ZXJ5ICZvdGhlcikgY29uc3R7CiAgICAgICAgcmV0dXJuIHQgPCBvdGhlci50OwogICAgfQp9OwoKdmVjdG9yPGludD4gYWRqW01BWF9WT1IgKyA1XTsKaW50IHZhbFtNQVhfVk9SICsgNV07CmludCB2b3I7CgpRdWVyeSBxdWVyaWVzW01BWF9NICsgNV07CmludCBhbnNbTUFYX00gKyA1XTsKCkVkZ2UgZWRnZXNbTUFYX00gKyA1XTsKcGlpIGFbTUFYX04gKyA1XTsKaW50IG4sIG0sIHE7CgpzdHJ1Y3QgRmVud2lja19UcmVlewogICAgaW50IHRyZWVbTUFYX04gKyA1XTsKCiAgICB2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKXsKICAgICAgICBmb3IoaW50IGkgPSBwb3M7IGkgPD0gbjsgaSArPSBpICYgLWkpIHRyZWVbaV0gKz0gdmFsOwogICAgfQoKICAgIGludCBnZXQoaW50IHBvcyl7CiAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgZm9yKGludCBpID0gcG9zOyBpID49IDE7IGkgLT0gaSAmIC1pKSByZXMgKz0gdHJlZVtpXTsKICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIGludCBxdWVyeShpbnQgbCwgaW50IHIpewogICAgICAgIHJldHVybiBnZXQocikgLSBnZXQobCAtIDEpOwogICAgfQp9ZmVuOwoKdm9pZCBJbnB1dCgpewogICAgY2luID4+IG4gPj4gbSA+PiBxOwoKICAgIEZPUihpLCAxLCBtKXsKICAgICAgICBpbnQgdSwgdiwgdzsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAgICAgZWRnZXNbaV0gPSB7dSwgdiwgd307CiAgICB9CgogICAgRk9SKGksIDEsIG4pewogICAgICAgIGNpbiA+PiBhW2ldLmZpOwogICAgICAgIGFbaV0uc2VjID0gaTsKICAgIH0KICAgIHNvcnQoYSArIDEsIGEgKyBuICsgMSk7Cn0KCnZvaWQga3J1c2thbCgpewogICAgc29ydChlZGdlcyArIDEsIGVkZ2VzICsgbSArIDEpOwogICAgZHN1LmJ1aWxkKE1BWF9WT1IpOwogICAgdm9yID0gbjsKCiAgICBGT1IoaSwgMSwgbSl7CiAgICAgICAgaW50IHUgPSBlZGdlc1tpXS51LCB2ID0gZWRnZXNbaV0udjsKICAgICAgICBpbnQgdyA9IGVkZ2VzW2ldLnc7CgogICAgICAgIGludCB4ID0gZHN1LmdldCh1KSwgeSA9IGRzdS5nZXQodik7CiAgICAgICAgaWYoeCAhPSB5KXsKICAgICAgICAgICAgKyt2b3I7CiAgICAgICAgICAgIHZhbFt2b3JdID0gdzsKCiAgICAgICAgICAgIGFkalt2b3JdLnBiKHgpOwogICAgICAgICAgICBhZGpbdm9yXS5wYih5KTsKCiAgICAgICAgICAgIGRzdS51bml0ZSh4LCB2b3IpOwogICAgICAgICAgICBkc3UudW5pdGUoeSwgdm9yKTsKICAgICAgICB9CiAgICB9Cn0KCm5hbWVzcGFjZSBMQ0F7CiAgICBpbnQgcGFyW0xPRyArIDVdW01BWF9WT1IgKyA1XSwgZGVwdGhbTUFYX1ZPUiArIDVdOwogICAgaW50IExbTUFYX1ZPUiArIDVdLCBSW01BWF9WT1IgKyA1XSwgdGltZXI7CgogICAgdm9pZCBkZnNfbGNhKGludCB1LCBpbnQgZGFkKXsKICAgICAgICBpZih1IDw9IG4pIExbdV0gPSBSW3VdID0gKyt0aW1lcjsKICAgICAgICBlbHNlIExbdV0gPSBJTkYsIFJbdV0gPSAtSU5GOwoKICAgICAgICBmb3IoaW50IHYgOiBhZGpbdV0pIGlmKHYgIT0gZGFkKXsKICAgICAgICAgICAgZGVwdGhbdl0gPSBkZXB0aFt1XSArIDE7CiAgICAgICAgICAgIHBhclswXVt2XSA9IHU7CgogICAgICAgICAgICBkZnNfbGNhKHYsIHUpOwoKICAgICAgICAgICAgTFt1XSA9IG1pbihMW3VdLCBMW3ZdKTsKICAgICAgICAgICAgUlt1XSA9IG1heChSW3VdLCBSW3ZdKTsKICAgICAgICB9CiAgICB9CgogICAgdm9pZCBidWlsZF9sY2EoaW50IG4pewogICAgICAgIFJFUCh1LCBuLCAxKSBpZighZGVwdGhbdV0pewogICAgICAgICAgICBkZnNfbGNhKHUsIDApOwogICAgICAgIH0KCiAgICAgICAgRk9SKGosIDEsIExPRykgRk9SKGksIDEsIG4pewogICAgICAgICAgICBwYXJbal1baV0gPSBwYXJbaiAtIDFdW3BhcltqIC0gMV1baV1dOwogICAgICAgIH0KICAgIH0KCiAgICBwaWkgZ2V0X0xSKGludCB1LCBpbnQgdyl7CiAgICAgICAgUkVQKGosIExPRywgMCkgaWYodmFsW3BhcltqXVt1XV0gPj0gdyl7CiAgICAgICAgICAgIHUgPSBwYXJbal1bdV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4ge0xbdV0sIFJbdV19OwogICAgfQp9IHVzaW5nIG5hbWVzcGFjZSBMQ0E7Cgp2b2lkIFByZXBhcmUoKXsKICAgIGtydXNrYWwoKTsKICAgIGJ1aWxkX2xjYSh2b3IpOwp9Cgp2b2lkIFNvbHZlKCl7CiAgICBGT1IoaSwgMSwgcSl7CiAgICAgICAgaW50IHUsIHcsIHQ7CiAgICAgICAgY2luID4+IHUgPj4gdyA+PiB0OwoKICAgICAgICBwaWkgY3VyID0gZ2V0X0xSKHUsIHcpOwogICAgICAgIHF1ZXJpZXNbaV0gPSB7Y3VyLmZpLCBjdXIuc2VjLCB0LCBpfTsKICAgIH0KICAgIHNvcnQocXVlcmllcyArIDEsIHF1ZXJpZXMgKyBxICsgMSk7CgogICAgZm9yKGludCBpID0gMSwgaiA9IDE7IGkgPD0gcTsgaSsrKXsKICAgICAgICBpbnQgbCA9IHF1ZXJpZXNbaV0ubCwgciA9IHF1ZXJpZXNbaV0ucjsKICAgICAgICBpbnQgdCA9IHF1ZXJpZXNbaV0udCwgaWQgPSBxdWVyaWVzW2ldLmlkOwoKICAgICAgICB3aGlsZShqIDw9IG4gJiYgYVtqXS5maSA8PSB0KSBmZW4udXBkYXRlKExbYVtqKytdLnNlY10sICsxKTsKICAgICAgICBhbnNbaWRdID0gZmVuLnF1ZXJ5KGwsIHIpOwogICAgfQoKICAgIEZPUihpLCAxLCBxKSBjb3V0IDw8IGFuc1tpXSA8PCBlbDsKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIElucHV0KCk7CiAgICBQcmVwYXJlKCk7CiAgICBTb2x2ZSgpOwoKICAgIHJldHVybiAwOwp9Cg==