/*
* @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==