/*
* @Author: hungeazy
* @Date: 2025-10-22 11:14:47
* @Last Modified by: hungeazy
* @Last Modified time: 2025-10-23 14:24:21
*/
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
using namespace std;
using namespace __gnu_pbds;
bool M1;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define int long long
#define ll long long
#define ull unsigned long long
#define sz(x) x.size()
#define sqr(x) (1LL * (x) * (x))
#define all(x) x.begin(), x.end()
#define fill(f,x) memset(f,x,sizeof(f))
#define FOR(i,l,r) for(int i=l;i<=r;i++)
#define FOD(i,r,l) for(int i=r;i>=l;i--)
#define debug(x) cout << #x << " = " << x << '\n'
#define ii pair<int,int>
#define iii pair<int,ii>
#define di pair<ii,ii>
#define vi vector<int>
#define vii vector<ii>
#define mii map<int,int>
#define fi first
#define se second
#define pb push_back
#define MOD 1000000007
#define __lcm(a,b) (1ll * ((a) / __gcd((a), (b))) * (b))
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define MASK(i) (1LL << (i))
#define c_bit(i) __builtin_popcountll(i)
#define BIT(x,i) ((x) & MASK(i))
#define SET_ON(x,i) ((x) | MASK(i))
#define SET_OFF(x,i) ((x) & ~MASK(i))
#define oo 1e18
#define name ""
#define endl '\n'
#define memory() cerr << abs(&M2-&M1)/1024.0/1024 << " MB" << endl
#define time() cerr << endl << "-------------Time:" << 1000.0 * clock() / CLOCKS_PER_SEC << "ms." << endl
template<typename T> bool maximize(T &res, const T &val) { if (res < val){ res = val; return true; }; return false; }
template<typename T> bool minimize(T &res, const T &val) { if (res > val){ res = val; return true; }; return false; }
template <class T> using ordered_set = tree <T, null_type, less_equal <T>, rb_tree_tag,tree_order_statistics_node_update>;
const int N = (int)2e5+10;
int n,m,q;
array<int,3> edge[N];
struct Query {
int l,r;
} query[N];
namespace sub2 {
bool approved() {
return n <= 2e3 and m <= 2e3 and q <= 2e3;
}
struct DSU {
int par[N],sz[N];
void init() {
FOR(i,1,n+1)
{
par[i] = i;
sz[i] = 1;
}
}
int acs(int u) {
return (par[u] == u ? u : par[u] = acs(par[u]));
}
bool join(int u, int v)
{
int x = acs(u), y = acs(v);
if (x != y)
{
if (sz[x] < sz[y]) swap(x,y);
sz[x] += sz[y];
par[y] = x;
return true;
}
return false;
}
} dsu;
void solve(void)
{
sort(edge+1,edge+m+1,[&](array<int,3> &x, array<int,3> &y) {
return x[2] < y[2];
});
FOR(j,1,q)
{
int l = query[j].l, r = query[j].r;
l++; r++;
dsu.init();
FOR(i,l,r) dsu.join(i,n+1);
int ans = 0;
FOR(i,1,m)
{
auto [u,v,w] = edge[i];
if (dsu.join(u,v)) ans += w;
}
cout << ans << endl;
}
}
}
namespace sub7 {
vector<array<int,3>> upd[N];
int ans[N],lastUpdate[N];
vii Q[N];
struct SegmentTree {
vi st,lazy;
int n;
SegmentTree() {};
SegmentTree(int _n):
n(_n), st((_n<<2)+1,0), lazy((_n<<2)+1,0) {};
void down(int id, int l, int r)
{
if (!lazy[id]) return;
int &k = lazy[id], mid = (l+r)>>1;
st[id<<1] += k*(mid-l+1);
st[id<<1|1] += k*(r-mid);
for (int i : {id<<1,id<<1|1})
lazy[i] += k;
k = 0;
}
void update(int id, int l, int r, int u, int v, int val)
{
if (l > v or r < u) return;
if (l >= u and r <= v)
{
st[id] += val*(r-l+1);
lazy[id] += val;
return;
}
int mid = (l+r)>>1; down(id,l,r);
update(id<<1,l,mid,u,v,val);
update(id<<1|1,mid+1,r,u,v,val);
st[id] = st[id<<1]+st[id<<1|1];
}
int get(int id, int l, int r, int u, int v)
{
if (l > v or r < u) return 0;
if (l >= u and r <= v) return st[id];
int mid = (l+r)>>1; down(id,l,r);
return get(id<<1,l,mid,u,v)+get(id<<1|1,mid+1,r,u,v);
}
} IT;
struct DSU {
int par[N],sz[N];
set<int> nodes[N];
void init() {
FOR(i,0,n-1)
{
par[i] = i;
sz[i] = 1;
nodes[i].insert(i);
}
}
int acs(int u) {
return (u == par[u] ? u : par[u] = acs(par[u]));
}
bool join(int i)
{
auto [u,v,w] = edge[i];
u--; v--;
int x = acs(u), y = acs(v);
if (x != y)
{
if (sz[x] < sz[y]) swap(x,y);
sz[x] += sz[y];
par[y] = x;
for (int v : nodes[y])
{
auto it = nodes[x].lower_bound(v);
if (it != nodes[x].end())
upd[v].pb({*it,-w,i});
if (it != nodes[x].begin())
{
it--;
upd[*it].pb({v,-w,i});
}
}
for (int v : nodes[y]) nodes[x].insert(v);
return true;
}
return false;
}
} dsu;
void solve(void)
{
FOR(i,1,q) Q[query[i].l].pb({query[i].r,i});
dsu.init();
sort(edge+1,edge+m+1,[&](array<int,3> &x, array<int,3> &y) {
return x[2] < y[2];
});
FOR(i,1,m)
if (dsu.join(i))
ans[0] += edge[i][2];
FOR(i,1,m) lastUpdate[i] = n;
IT = SegmentTree(n);
FOD(i,n-1,0)
{
for (auto x : upd[i])
if (x[0] < lastUpdate[x[2]])
{
IT.update(1,0,n-1,x[0],lastUpdate[x[2]]-1,x[1]);
lastUpdate[x[2]] = x[1];
}
for (auto x : Q[i])
ans[x.se] = IT.get(1,0,n-1,x.fi,x.fi);
}
FOR(i,1,q) cout << ans[i]+ans[0] << endl;
}
}
bool M2;
signed main()
{
fast;
if (fopen(name".inp","r"))
{
freopen(name".inp","r",stdin);
freopen(name".out","w",stdout);
}
cin >> n >> m >> q;
FOR(i,1,m)
{
int u,v,w;
cin >> u >> v >> w;
u++; v++;
edge[i] = {u,v,w};
}
FOR(i,1,q) cin >> query[i].l >> query[i].r;
// if (sub2::approved()) return sub2::solve(), time(), memory(), 0;
sub7::solve();
time();
memory();
return 0;
}
// ██░ ██ █ ██ ███▄ █ ▄████
//▓██░ ██▒ ██ ▓██▒ ██ ▀█ █ ██▒ ▀█▒
//▒██▀▀██░▓██ ▒██░▓██ ▀█ ██▒▒██░▄▄▄░
//░▓█ ░██ ▓▓█ ░██░▓██▒ ▐▌██▒░▓█ ██▓
//░▓█▒░██▓▒▒█████▓ ▒██░ ▓██░░▒▓███▀▒
// ▒ ░░▒░▒░▒▓▒ ▒ ▒ ░ ▒░ ▒ ▒ ░▒ ▒
// ▒ ░▒░ ░░░▒░ ░ ░ ░ ░░ ░ ▒░ ░ ░
// ░ ░░ ░ ░░░ ░ ░ ░ ░ ░ ░ ░ ░
// ░ ░ ░ ░ ░ ░
LyoKKiBAQXV0aG9yOiBodW5nZWF6eQoqIEBEYXRlOiAgIDIwMjUtMTAtMjIgMTE6MTQ6NDcKKiBATGFzdCBNb2RpZmllZCBieTogICBodW5nZWF6eQoqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjUtMTAtMjMgMTQ6MjQ6MjEKKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4gCiNpbmNsdWRlIDxleHQvcGJfZHMvdHJlZV9wb2xpY3kuaHBwPiAKLy8gI3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk8zIikgIAovLyAjcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikgIAovLyAjcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsYm1pLGJtaTIscG9wY250LGx6Y250IikgIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsgCmJvb2wgTTE7CiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgc3ooeCkgeC5zaXplKCkKI2RlZmluZSBzcXIoeCkgKDFMTCAqICh4KSAqICh4KSkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgZmlsbChmLHgpIG1lbXNldChmLHgsc2l6ZW9mKGYpKQojZGVmaW5lIEZPUihpLGwscikgZm9yKGludCBpPWw7aTw9cjtpKyspCiNkZWZpbmUgRk9EKGkscixsKSBmb3IoaW50IGk9cjtpPj1sO2ktLSkKI2RlZmluZSBkZWJ1Zyh4KSBjb3V0IDw8ICN4IDw8ICIgPSAiIDw8IHggPDwgJ1xuJwojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBpaWkgcGFpcjxpbnQsaWk+CiNkZWZpbmUgZGkgcGFpcjxpaSxpaT4KI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+CiNkZWZpbmUgbWlpIG1hcDxpbnQsaW50PgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKI2RlZmluZSBfX2xjbShhLGIpICgxbGwgKiAoKGEpIC8gX19nY2QoKGEpLCAoYikpKSAqIChiKSkKI2RlZmluZSBZRVMgY291dCA8PCAiWUVTXG4iCiNkZWZpbmUgTk8gY291dCA8PCAiTk9cbiIKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIGNfYml0KGkpIF9fYnVpbHRpbl9wb3Bjb3VudGxsKGkpCiNkZWZpbmUgQklUKHgsaSkgKCh4KSAmIE1BU0soaSkpCiNkZWZpbmUgU0VUX09OKHgsaSkgKCh4KSB8IE1BU0soaSkpCiNkZWZpbmUgU0VUX09GRih4LGkpICgoeCkgJiB+TUFTSyhpKSkKI2RlZmluZSBvbyAxZTE4CiNkZWZpbmUgbmFtZSAiIgojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIG1lbW9yeSgpIGNlcnIgPDwgYWJzKCZNMi0mTTEpLzEwMjQuMC8xMDI0IDw8ICIgTUIiIDw8IGVuZGwKI2RlZmluZSB0aW1lKCkgY2VyciA8PCBlbmRsIDw8ICItLS0tLS0tLS0tLS0tVGltZToiIDw8IDEwMDAuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAibXMuIiA8PCBlbmRsCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aW1pemUoVCAmcmVzLCBjb25zdCBUICZ2YWwpIHsgaWYgKHJlcyA8IHZhbCl7IHJlcyA9IHZhbDsgcmV0dXJuIHRydWU7IH07IHJldHVybiBmYWxzZTsgfQp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIG1pbmltaXplKFQgJnJlcywgY29uc3QgVCAmdmFsKSB7IGlmIChyZXMgPiB2YWwpeyByZXMgPSB2YWw7IHJldHVybiB0cnVlOyB9OyByZXR1cm4gZmFsc2U7IH0KdGVtcGxhdGUgPGNsYXNzIFQ+IHVzaW5nIG9yZGVyZWRfc2V0ID0gdHJlZSA8VCwgbnVsbF90eXBlLCBsZXNzX2VxdWFsIDxUPiwgcmJfdHJlZV90YWcsdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPjsKY29uc3QgaW50IE4gPSAoaW50KTJlNSsxMDsKaW50IG4sbSxxOwphcnJheTxpbnQsMz4gZWRnZVtOXTsKCnN0cnVjdCBRdWVyeSB7CglpbnQgbCxyOwp9IHF1ZXJ5W05dOwoKbmFtZXNwYWNlIHN1YjIgewoKCWJvb2wgYXBwcm92ZWQoKSB7CgkJcmV0dXJuIG4gPD0gMmUzIGFuZCBtIDw9IDJlMyBhbmQgcSA8PSAyZTM7Cgl9CgoJc3RydWN0IERTVSB7CgkJaW50IHBhcltOXSxzeltOXTsKCgkJdm9pZCBpbml0KCkgewoJCQlGT1IoaSwxLG4rMSkgCgkJCXsKCQkJCXBhcltpXSA9IGk7CgkJCQlzeltpXSA9IDE7CgkJCX0KCQl9CgoJCWludCBhY3MoaW50IHUpIHsKCQkJcmV0dXJuIChwYXJbdV0gPT0gdSA/IHUgOiBwYXJbdV0gPSBhY3MocGFyW3VdKSk7CgkJfQoKCQlib29sIGpvaW4oaW50IHUsIGludCB2KQoJCXsKCQkJaW50IHggPSBhY3ModSksIHkgPSBhY3Modik7CgkJCWlmICh4ICE9IHkpCgkJCXsKCQkJCWlmIChzelt4XSA8IHN6W3ldKSBzd2FwKHgseSk7CgkJCQlzelt4XSArPSBzelt5XTsKCQkJCXBhclt5XSA9IHg7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfSBkc3U7CgoJdm9pZCBzb2x2ZSh2b2lkKQoJewoJCXNvcnQoZWRnZSsxLGVkZ2UrbSsxLFsmXShhcnJheTxpbnQsMz4gJngsIGFycmF5PGludCwzPiAmeSkgewoJCQlyZXR1cm4geFsyXSA8IHlbMl07CgkJfSk7CgkJRk9SKGosMSxxKQoJCXsKCQkJaW50IGwgPSBxdWVyeVtqXS5sLCByID0gcXVlcnlbal0ucjsKCQkJbCsrOyByKys7CgkJCWRzdS5pbml0KCk7CgkJCUZPUihpLGwscikgZHN1LmpvaW4oaSxuKzEpOwoJCQlpbnQgYW5zID0gMDsKCQkJRk9SKGksMSxtKQoJCQl7CgkJCQlhdXRvIFt1LHYsd10gPSBlZGdlW2ldOwoJCQkJaWYgKGRzdS5qb2luKHUsdikpIGFucyArPSB3OwoJCQl9CgkJCWNvdXQgPDwgYW5zIDw8IGVuZGw7CgkJfQoJfQoJCn0KCm5hbWVzcGFjZSBzdWI3IHsKCgl2ZWN0b3I8YXJyYXk8aW50LDM+PiB1cGRbTl07CglpbnQgYW5zW05dLGxhc3RVcGRhdGVbTl07Cgl2aWkgUVtOXTsKCglzdHJ1Y3QgU2VnbWVudFRyZWUgewoJCXZpIHN0LGxhenk7CgkJaW50IG47CgoJCVNlZ21lbnRUcmVlKCkge307CgkJU2VnbWVudFRyZWUoaW50IF9uKToKCQkJbihfbiksIHN0KChfbjw8MikrMSwwKSwgbGF6eSgoX248PDIpKzEsMCkge307CgoJCXZvaWQgZG93bihpbnQgaWQsIGludCBsLCBpbnQgcikKCQl7CgkJCWlmICghbGF6eVtpZF0pIHJldHVybjsKCQkJaW50ICZrID0gbGF6eVtpZF0sIG1pZCA9IChsK3IpPj4xOwoJCQlzdFtpZDw8MV0gKz0gayoobWlkLWwrMSk7CgkJCXN0W2lkPDwxfDFdICs9IGsqKHItbWlkKTsKCQkJZm9yIChpbnQgaSA6IHtpZDw8MSxpZDw8MXwxfSkKCQkJCWxhenlbaV0gKz0gazsKCQkJayA9IDA7CgkJfQoKCQl2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2LCBpbnQgdmFsKQoJCXsKCQkJaWYgKGwgPiB2IG9yIHIgPCB1KSByZXR1cm47CgkJCWlmIChsID49IHUgYW5kIHIgPD0gdikKCQkJewoJCQkJc3RbaWRdICs9IHZhbCooci1sKzEpOwoJCQkJbGF6eVtpZF0gKz0gdmFsOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWludCBtaWQgPSAobCtyKT4+MTsgZG93bihpZCxsLHIpOwoJCQl1cGRhdGUoaWQ8PDEsbCxtaWQsdSx2LHZhbCk7CgkJCXVwZGF0ZShpZDw8MXwxLG1pZCsxLHIsdSx2LHZhbCk7CgkJCXN0W2lkXSA9IHN0W2lkPDwxXStzdFtpZDw8MXwxXTsKCQl9CgoJCWludCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikKCQl7CgkJCWlmIChsID4gdiBvciByIDwgdSkgcmV0dXJuIDA7CgkJCWlmIChsID49IHUgYW5kIHIgPD0gdikgcmV0dXJuIHN0W2lkXTsKCQkJaW50IG1pZCA9IChsK3IpPj4xOyBkb3duKGlkLGwscik7CgkJCXJldHVybiBnZXQoaWQ8PDEsbCxtaWQsdSx2KStnZXQoaWQ8PDF8MSxtaWQrMSxyLHUsdik7CgkJfQoJfSBJVDsKCglzdHJ1Y3QgRFNVIHsKCQlpbnQgcGFyW05dLHN6W05dOwoJCXNldDxpbnQ+IG5vZGVzW05dOwoJCQoJCXZvaWQgaW5pdCgpIHsKCQkJRk9SKGksMCxuLTEpIAoJCQl7CgkJCQlwYXJbaV0gPSBpOwoJCQkJc3pbaV0gPSAxOwoJCQkJbm9kZXNbaV0uaW5zZXJ0KGkpOwoJCQl9CgkJfQoKCQlpbnQgYWNzKGludCB1KSB7CgkJCXJldHVybiAodSA9PSBwYXJbdV0gPyB1IDogcGFyW3VdID0gYWNzKHBhclt1XSkpOwoJCX0KCgkJYm9vbCBqb2luKGludCBpKQoJCXsKCQkJYXV0byBbdSx2LHddID0gZWRnZVtpXTsKCQkJdS0tOyB2LS07CgkJCWludCB4ID0gYWNzKHUpLCB5ID0gYWNzKHYpOwoJCQlpZiAoeCAhPSB5KQoJCQl7CgkJCQlpZiAoc3pbeF0gPCBzelt5XSkgc3dhcCh4LHkpOwoJCQkJc3pbeF0gKz0gc3pbeV07CgkJCQlwYXJbeV0gPSB4OwoJCQkJZm9yIChpbnQgdiA6IG5vZGVzW3ldKQoJCQkJewoJCQkJCWF1dG8gaXQgPSBub2Rlc1t4XS5sb3dlcl9ib3VuZCh2KTsKCQkJCQlpZiAoaXQgIT0gbm9kZXNbeF0uZW5kKCkpCgkJCQkJCXVwZFt2XS5wYih7Kml0LC13LGl9KTsKCQkJCQlpZiAoaXQgIT0gbm9kZXNbeF0uYmVnaW4oKSkKCQkJCQl7CgkJCQkJCWl0LS07CgkJCQkJCXVwZFsqaXRdLnBiKHt2LC13LGl9KTsKCQkJCQl9CgkJCQl9CgkJCQlmb3IgKGludCB2IDogbm9kZXNbeV0pIG5vZGVzW3hdLmluc2VydCh2KTsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9IGRzdTsKCgl2b2lkIHNvbHZlKHZvaWQpCgl7CgkJRk9SKGksMSxxKSBRW3F1ZXJ5W2ldLmxdLnBiKHtxdWVyeVtpXS5yLGl9KTsKCQlkc3UuaW5pdCgpOwoJCXNvcnQoZWRnZSsxLGVkZ2UrbSsxLFsmXShhcnJheTxpbnQsMz4gJngsIGFycmF5PGludCwzPiAmeSkgewoJCQlyZXR1cm4geFsyXSA8IHlbMl07CgkJfSk7CgkJRk9SKGksMSxtKQoJCQlpZiAoZHN1LmpvaW4oaSkpCgkJCQlhbnNbMF0gKz0gZWRnZVtpXVsyXTsKCQlGT1IoaSwxLG0pIGxhc3RVcGRhdGVbaV0gPSBuOwoJCUlUID0gU2VnbWVudFRyZWUobik7CgkJRk9EKGksbi0xLDApCgkJewoJCQlmb3IgKGF1dG8geCA6IHVwZFtpXSkKCQkJCWlmICh4WzBdIDwgbGFzdFVwZGF0ZVt4WzJdXSkKCQkJCXsKCQkJCQlJVC51cGRhdGUoMSwwLG4tMSx4WzBdLGxhc3RVcGRhdGVbeFsyXV0tMSx4WzFdKTsKCQkJCQlsYXN0VXBkYXRlW3hbMl1dID0geFsxXTsKCQkJCX0KCQkJZm9yIChhdXRvIHggOiBRW2ldKQoJCQkJYW5zW3guc2VdID0gSVQuZ2V0KDEsMCxuLTEseC5maSx4LmZpKTsKCQl9CgkJRk9SKGksMSxxKSBjb3V0IDw8IGFuc1tpXSthbnNbMF0gPDwgZW5kbDsKCX0KCn0KCmJvb2wgTTI7CnNpZ25lZCBtYWluKCkKewogICAgZmFzdDsKICAgIGlmIChmb3BlbihuYW1lIi5pbnAiLCJyIikpCiAgICB7CiAgICAJZnJlb3BlbihuYW1lIi5pbnAiLCJyIixzdGRpbik7CiAgICAJZnJlb3BlbihuYW1lIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgfQogICAgY2luID4+IG4gPj4gbSA+PiBxOwogICAgRk9SKGksMSxtKQogICAgewogICAgCWludCB1LHYsdzsKICAgIAljaW4gPj4gdSA+PiB2ID4+IHc7CiAgICAJdSsrOyB2Kys7CiAgICAJZWRnZVtpXSA9IHt1LHYsd307CiAgICB9CiAgICBGT1IoaSwxLHEpIGNpbiA+PiBxdWVyeVtpXS5sID4+IHF1ZXJ5W2ldLnI7CiAgICAvLyBpZiAoc3ViMjo6YXBwcm92ZWQoKSkgcmV0dXJuIHN1YjI6OnNvbHZlKCksIHRpbWUoKSwgbWVtb3J5KCksIDA7CiAgICBzdWI3Ojpzb2x2ZSgpOwogICAgdGltZSgpOwogICAgbWVtb3J5KCk7CiAgICByZXR1cm4gMDsKfQovLyDilojilojilpEg4paI4paIICDiloggICAg4paI4paIICDilojilojilojiloQgICAg4paIICAg4paE4paI4paI4paI4paICi8v4paT4paI4paI4paRIOKWiOKWiOKWkiDilojiloggIOKWk+KWiOKWiOKWkiDilojilogg4paA4paIICAg4paIICDilojilojilpIg4paA4paI4paSCi8v4paS4paI4paI4paA4paA4paI4paI4paR4paT4paI4paIICDilpLilojilojilpHilpPilojiloggIOKWgOKWiCDilojilojilpLilpLilojilojilpHiloTiloTiloTilpEKLy/ilpHilpPilogg4paR4paI4paIIOKWk+KWk+KWiCAg4paR4paI4paI4paR4paT4paI4paI4paSICDilpDilozilojilojilpLilpHilpPiloggIOKWiOKWiOKWkwovL+KWkeKWk+KWiOKWkuKWkeKWiOKWiOKWk+KWkuKWkuKWiOKWiOKWiOKWiOKWiOKWkyDilpLilojilojilpEgICDilpPilojilojilpHilpHilpLilpPilojilojilojiloDilpIKLy8g4paSIOKWkeKWkeKWkuKWkeKWkuKWkeKWkuKWk+KWkiDilpIg4paSIOKWkSDilpLilpEgICDilpIg4paSICDilpHilpIgICDilpIKLy8g4paSIOKWkeKWkuKWkSDilpHilpHilpHilpLilpEg4paRIOKWkSDilpEg4paR4paRICAg4paRIOKWkuKWkSAg4paRICAg4paRCi8vIOKWkSAg4paR4paRIOKWkSDilpHilpHilpEg4paRIOKWkSAgICDilpEgICDilpEg4paRIOKWkSDilpEgICDilpEKLy8g4paRICDilpEgIOKWkSAgIOKWkSAgICAgICAgICAgICAg4paRICAgICAgIOKWkQ==