#include <bits/stdc++.h>
#define int long long
#define debug cout << "ok\n";
#define SQR(x) (1LL * ((x) * (x)))
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define pli pair<ll,int>
#define vi vector<int>
#define FAST ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int ui;
using namespace std;
const int M = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFLL = (ll)2e18 + 7LL;
const ld PI = acos(-1);
const int dx[] = {1, -1, 0, 0, -1, 1, 1, -1};
const int dy[] = {0, 0, 1, -1, -1, -1, 1, 1};
template<class _, class __>
bool minimize(_ &x, const __ y){
if(x > y){
x = y;
return true;
} else return false;
}
template<class _, class __>
bool maximize(_ &x, const __ y){
if(x < y){
x = y;
return true;
} else return false;
}
template<class _,class __>
void Add(_ &x, const __ y) {
x += y;
if (x >= M) {
x -= M;
}
return;
}
template<class _,class __>
void Diff(_ &x, const __ y) {
x -= y;
if (x < 0) {
x += M;
}
return;
}
//--------------------------------------------------------------
const int MaxN = 1e5+7;
int n,m,q,res[MaxN];
set<int> s[MaxN];
struct Edges {
int u;
int v;
int w;
} edge[MaxN];
bool cmp(Edges a,Edges b) {
return a.w < b.w;
}
struct Query {
int u;
int v;
int k;
int cs;
} que[MaxN],que_tmp[MaxN];
struct DSU {
stack<pii> st1;
stack<pii> st2;
int n;
vi lab;
void Set(int _n) {
n = _n;
lab.resize(n+1,-1);
}
int GR(int u) {
return lab[u] < 0 ? u : GR(lab[u]);
}
pii history() {
return mp(st1.size(),st2.size());
}
void uni(int u,int v) {
u = GR(u);
v = GR(v);
if (u == v) return;
st1.push(mp(u,lab[u]));
st1.push(mp(v,lab[v]));
if (lab[u] < lab[v]) {
lab[u] += lab[v];
lab[v] = u;
for (int x : s[v]) {
if (s[u].find(x) == s[u].end()) {
s[u].insert(x);
st2.push(mp(u,x));
}
}
}
else {
lab[v] += lab[u];
lab[u] = v;
for (int x : s[u]) {
if (s[v].find(x) == s[v].end()) {
s[v].insert(x);
st2.push(mp(v,x));
}
}
}
}
void rollback(pii tmp) {
while (st1.size() > tmp.fi) {
int u = st1.top().fi;
int v = st1.top().se;
lab[u] = v;
st1.pop();
}
while (st2.size() > tmp.se) {
int u = st2.top().fi;
int v = st2.top().se;
s[u].erase(v);
st2.pop();
}
}
} dsu;
void dnc(int l,int r,int ls,int rs) {
if (l > r || ls > rs) return;
int mid = (l+r) >> 1;
pii tmp = dsu.history();
for (int i=l;i<=mid;i++) {
dsu.uni(edge[i].u,edge[i].v);
}
int lss = ls - 1;
int rss = rs + 1;
for (int i=ls;i<=rs;i++) {
int u = que[i].u;
int v = que[i].v;
int k = que[i].k;
int cs = que[i].cs;
u = dsu.GR(u);
v = dsu.GR(v);
if (u != v || s[u].size() < k) {
que_tmp[--rss] = que[i];
}
else {
minimize(res[cs],edge[mid].w);
que_tmp[++lss] = que[i];
}
}
for (int i=ls;i<=rs;i++) que[i] = que_tmp[i];
dnc(mid+1,r,rss,rs);
dsu.rollback(tmp);
dnc(l,mid-1,ls,lss);
}
void sol() {
cin >> n >> m >> q;
dsu.Set(n);
for (int i=1;i<=n;i++) {
int x;
cin >> x;
s[i].insert(x);
}
for (int i=1;i<=m;i++) {
int u,v,k;
cin >> u >> v >> k;
edge[i] = (Edges){u,v,k};
}
sort(edge+1,edge+m+1,cmp);
// for (int i=1;i<=m;i++) cout << edge[i].u << ' ' << edge[i].v << ' ' << edge[i].w << '\n';
memset(res,0x3f,sizeof(res));
for (int i=1;i<=q;i++) {
int u,v,k;
cin >> u >> v >> k;
if (u == v && k == 1) res[i] = 0;
que[i] = (Query){u,v,k,i};
}
dnc(1,m,1,q);
for (int i=1;i<=q;i++) cout << res[i] << '\n';
}
signed main() {
freopen("test.inp","r",stdin);
// freopen("TRAVEL.inp","r",stdin);
// freopen("TRAVEL.out","w",stdout);
FAST
int t=1;
// cin >> t;
while (t--) sol();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGludCBsb25nIGxvbmcKCiNkZWZpbmUgZGVidWcgICAgIGNvdXQgPDwgIm9rXG4iOwojZGVmaW5lIFNRUih4KSAgICAoMUxMICogKCh4KSAqICh4KSkpCiNkZWZpbmUgTUFTSyhpKSAgICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KSA+PiAoaSkpICYgMSkKI2RlZmluZSBmaSAgICAgICAgZmlyc3QKI2RlZmluZSBzZSAgICAgICAgc2Vjb25kCiNkZWZpbmUgcGIgICAgICAgIHB1c2hfYmFjawoKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBsaSBwYWlyPGxsLGludD4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgoKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVpOwoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNID0gMWU5ICsgNzsKY29uc3QgaW50IElORiA9IDFlOSArIDc7CmNvbnN0IGxsIElORkxMID0gKGxsKTJlMTggKyA3TEw7CmNvbnN0IGxkIFBJID0gYWNvcygtMSk7Cgpjb25zdCBpbnQgZHhbXSA9IHsxLCAtMSwgMCwgMCwgLTEsIDEsIDEsIC0xfTsKY29uc3QgaW50IGR5W10gPSB7MCwgMCwgMSwgLTEsIC0xLCAtMSwgMSwgMX07Cgp0ZW1wbGF0ZTxjbGFzcyBfLCBjbGFzcyBfXz4KICAgIGJvb2wgbWluaW1pemUoXyAmeCwgY29uc3QgX18geSl7CiAgICAgICAgaWYoeCA+IHkpewogICAgICAgICAgICB4ID0geTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHJldHVybiBmYWxzZTsKICAgIH0KdGVtcGxhdGU8Y2xhc3MgXywgY2xhc3MgX18+CiAgICBib29sIG1heGltaXplKF8gJngsIGNvbnN0IF9fIHkpewogICAgICAgIGlmKHggPCB5KXsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9Cgp0ZW1wbGF0ZTxjbGFzcyBfLGNsYXNzIF9fPgogICAgdm9pZCBBZGQoXyAmeCwgY29uc3QgX18geSkgewogICAgICAgIHggKz0geTsKICAgICAgICBpZiAoeCA+PSBNKSB7CiAgICAgICAgICAgIHggLT0gTTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgXyxjbGFzcyBfXz4KICAgIHZvaWQgRGlmZihfICZ4LCBjb25zdCBfXyB5KSB7CiAgICAgICAgeCAtPSB5OwogICAgICAgIGlmICh4IDwgMCkgewogICAgICAgICAgICB4ICs9IE07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmNvbnN0IGludCBNYXhOID0gMWU1Kzc7CgppbnQgbixtLHEscmVzW01heE5dOwpzZXQ8aW50PiBzW01heE5dOwoKc3RydWN0IEVkZ2VzIHsKICAgIGludCB1OwogICAgaW50IHY7CiAgICBpbnQgdzsKfSBlZGdlW01heE5dOwoKYm9vbCBjbXAoRWRnZXMgYSxFZGdlcyBiKSB7CiAgICByZXR1cm4gYS53IDwgYi53Owp9CgpzdHJ1Y3QgUXVlcnkgewogICAgaW50IHU7CiAgICBpbnQgdjsKICAgIGludCBrOwogICAgaW50IGNzOwp9IHF1ZVtNYXhOXSxxdWVfdG1wW01heE5dOwoKc3RydWN0IERTVSB7CiAgICBzdGFjazxwaWk+IHN0MTsKICAgIHN0YWNrPHBpaT4gc3QyOwoKICAgIGludCBuOwogICAgdmkgbGFiOwoKICAgIHZvaWQgU2V0KGludCBfbikgewogICAgICAgIG4gPSBfbjsKICAgICAgICBsYWIucmVzaXplKG4rMSwtMSk7CiAgICB9CgogICAgaW50IEdSKGludCB1KSB7CiAgICAgICAgcmV0dXJuIGxhYlt1XSA8IDAgPyB1IDogR1IobGFiW3VdKTsKICAgIH0KCiAgICBwaWkgaGlzdG9yeSgpIHsKICAgICAgICByZXR1cm4gbXAoc3QxLnNpemUoKSxzdDIuc2l6ZSgpKTsKICAgIH0KCiAgICB2b2lkIHVuaShpbnQgdSxpbnQgdikgewogICAgICAgIHUgPSBHUih1KTsKICAgICAgICB2ID0gR1Iodik7CiAgICAgICAgaWYgKHUgPT0gdikgcmV0dXJuOwogICAgICAgIHN0MS5wdXNoKG1wKHUsbGFiW3VdKSk7CiAgICAgICAgc3QxLnB1c2gobXAodixsYWJbdl0pKTsKICAgICAgICBpZiAobGFiW3VdIDwgbGFiW3ZdKSB7CiAgICAgICAgICAgIGxhYlt1XSArPSBsYWJbdl07CiAgICAgICAgICAgIGxhYlt2XSA9IHU7CiAgICAgICAgICAgIGZvciAoaW50IHggOiBzW3ZdKSB7CiAgICAgICAgICAgICAgICBpZiAoc1t1XS5maW5kKHgpID09IHNbdV0uZW5kKCkpIHsKICAgICAgICAgICAgICAgICAgICBzW3VdLmluc2VydCh4KTsKICAgICAgICAgICAgICAgICAgICBzdDIucHVzaChtcCh1LHgpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbGFiW3ZdICs9IGxhYlt1XTsKICAgICAgICAgICAgbGFiW3VdID0gdjsKICAgICAgICAgICAgZm9yIChpbnQgeCA6IHNbdV0pIHsKICAgICAgICAgICAgICAgIGlmIChzW3ZdLmZpbmQoeCkgPT0gc1t2XS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgIHNbdl0uaW5zZXJ0KHgpOwogICAgICAgICAgICAgICAgICAgIHN0Mi5wdXNoKG1wKHYseCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHZvaWQgcm9sbGJhY2socGlpIHRtcCkgewogICAgICAgIHdoaWxlIChzdDEuc2l6ZSgpID4gdG1wLmZpKSB7CiAgICAgICAgICAgIGludCB1ID0gc3QxLnRvcCgpLmZpOwogICAgICAgICAgICBpbnQgdiA9IHN0MS50b3AoKS5zZTsKICAgICAgICAgICAgbGFiW3VdID0gdjsKICAgICAgICAgICAgc3QxLnBvcCgpOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoc3QyLnNpemUoKSA+IHRtcC5zZSkgewogICAgICAgICAgICBpbnQgdSA9IHN0Mi50b3AoKS5maTsKICAgICAgICAgICAgaW50IHYgPSBzdDIudG9wKCkuc2U7CiAgICAgICAgICAgIHNbdV0uZXJhc2Uodik7CiAgICAgICAgICAgIHN0Mi5wb3AoKTsKICAgICAgICB9CiAgICB9Cn0gZHN1OwoKdm9pZCBkbmMoaW50IGwsaW50IHIsaW50IGxzLGludCBycykgewogICAgaWYgKGwgPiByIHx8IGxzID4gcnMpIHJldHVybjsKICAgIGludCBtaWQgPSAobCtyKSA+PiAxOwogICAgcGlpIHRtcCA9IGRzdS5oaXN0b3J5KCk7CiAgICBmb3IgKGludCBpPWw7aTw9bWlkO2krKykgewogICAgICAgIGRzdS51bmkoZWRnZVtpXS51LGVkZ2VbaV0udik7CiAgICB9CiAgICBpbnQgbHNzID0gbHMgLSAxOwogICAgaW50IHJzcyA9IHJzICsgMTsKICAgIGZvciAoaW50IGk9bHM7aTw9cnM7aSsrKSB7CiAgICAgICAgaW50IHUgPSBxdWVbaV0udTsKICAgICAgICBpbnQgdiA9IHF1ZVtpXS52OwogICAgICAgIGludCBrID0gcXVlW2ldLms7CiAgICAgICAgaW50IGNzID0gcXVlW2ldLmNzOwogICAgICAgIHUgPSBkc3UuR1IodSk7CiAgICAgICAgdiA9IGRzdS5HUih2KTsKICAgICAgICBpZiAodSAhPSB2IHx8IHNbdV0uc2l6ZSgpIDwgaykgewogICAgICAgICAgICBxdWVfdG1wWy0tcnNzXSA9IHF1ZVtpXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG1pbmltaXplKHJlc1tjc10sZWRnZVttaWRdLncpOwogICAgICAgICAgICBxdWVfdG1wWysrbHNzXSA9IHF1ZVtpXTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpPWxzO2k8PXJzO2krKykgcXVlW2ldID0gcXVlX3RtcFtpXTsKICAgIGRuYyhtaWQrMSxyLHJzcyxycyk7CiAgICBkc3Uucm9sbGJhY2sodG1wKTsKICAgIGRuYyhsLG1pZC0xLGxzLGxzcyk7Cn0KCnZvaWQgc29sKCkgewogICAgY2luID4+IG4gPj4gbSA+PiBxOwogICAgZHN1LlNldChuKTsKICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiB4OwogICAgICAgIHNbaV0uaW5zZXJ0KHgpOwogICAgfQogICAgZm9yIChpbnQgaT0xO2k8PW07aSsrKSB7CiAgICAgICAgaW50IHUsdixrOwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gazsKICAgICAgICBlZGdlW2ldID0gKEVkZ2VzKXt1LHYsa307CiAgICB9CiAgICBzb3J0KGVkZ2UrMSxlZGdlK20rMSxjbXApOwovLyAgICBmb3IgKGludCBpPTE7aTw9bTtpKyspIGNvdXQgPDwgZWRnZVtpXS51IDw8ICcgJyA8PCBlZGdlW2ldLnYgPDwgJyAnIDw8IGVkZ2VbaV0udyA8PCAnXG4nOwogICAgbWVtc2V0KHJlcywweDNmLHNpemVvZihyZXMpKTsKICAgIGZvciAoaW50IGk9MTtpPD1xO2krKykgewogICAgICAgIGludCB1LHYsazsKICAgICAgICBjaW4gPj4gdSA+PiB2ID4+IGs7CiAgICAgICAgaWYgKHUgPT0gdiAmJiBrID09IDEpIHJlc1tpXSA9IDA7CiAgICAgICAgcXVlW2ldID0gKFF1ZXJ5KXt1LHYsayxpfTsKICAgIH0KICAgIGRuYygxLG0sMSxxKTsKICAgIGZvciAoaW50IGk9MTtpPD1xO2krKykgY291dCA8PCByZXNbaV0gPDwgJ1xuJzsKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBmcmVvcGVuKCJ0ZXN0LmlucCIsInIiLHN0ZGluKTsKLy8gICAgZnJlb3BlbigiVFJBVkVMLmlucCIsInIiLHN0ZGluKTsKLy8gICAgZnJlb3BlbigiVFJBVkVMLm91dCIsInciLHN0ZG91dCk7CiAgICBGQVNUCiAgICBpbnQgdD0xOwovLyAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHNvbCgpOwp9Cg==