#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 100005
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define pll pair<ll,ll>
#define fi first
#define se second
int n , m , p , U[maxn] , V[maxn] , ans[3 * maxn] , M;
ll bit[3 * maxn];
void update(int idx , ll val){
while(idx <= 2 * M){
bit[idx] += val;
idx += idx & (-idx);
}
}
ll get(int idx){
ll sum = 0;
while(idx > 0){
sum += bit[idx];
idx -= idx & (-idx);
}
return sum;
}
struct Edge{
int v;
ll w;
int id;
};
struct State{
ll dist;
int node;
bool operator > (const State &other) const{
return dist > other.dist;
}
};
struct Nanh_cuti{
ll a , b , orga , orgb;
int id;
};
vector<Edge> adj[maxn];
const ll INF = 1e18;
vector<ll> dijkstra(int s){
vector<ll> d(n + 1 , INF);
priority_queue<State , vector<State> , greater<State>> q;
d[s] = 0;
q.push({d[s] , s});
while(!q.empty()){
State cur = q.top();
q.pop();
ll kc = cur.dist;
int u = cur.node;
if(kc > d[u]) continue;
for(auto &x : adj[u]){
int v = x.v;
ll w = x.w;
if(d[v] > d[u] + w){
d[v] = d[u] + w;
q.push({d[v] , v});
}
}
}
return d;
}
int getd2id(const vector<ll> &allD2 , ll x){
return upper_bound(allD2.begin() ,allD2.end() , x) - allD2.begin() + 1;
}
bool cmp(pll &a , pll &b){
return a.fi < b.fi;
}
bool cmp2(Nanh_cuti &c , Nanh_cuti &d){
return c.a < d.a;
}
int main(){
if(fopen("IMPEVAL.INP" , "r")){
freopen("IMPEVAL.INP" , "r" , stdin);
freopen("IMPEVAL.OUT" , "w" , stdout);
}
FAST;
cin >> n >> m >> p;
FOR(i , 1 , m){
ll w;
cin >> U[i] >> V[i] >> w;
adj[U[i]].push_back({V[i] , w , i});
adj[V[i]].push_back({U[i] , w , i});
}
vector<ll> d1 = dijkstra(1);
vector<ll> d2 = dijkstra(2);
vector<Nanh_cuti> queries;
queries.reserve(2 * p);
FOR(j , 0 , p - 1){
int t;
ll w;
cin >> t >> w;
int u = U[t];
int v = V[t];
ll new_d1u = min(d1[u] , d1[v] + w);
ll new_d1v = min(d1[v] , d1[u] + w);
ll new_d2u = min(d2[u] , d2[v] + w);
ll new_d2v = min(d2[v] , d2[u] + w);
queries.push_back({new_d1u , new_d2u , d1[u] , d2[u] , j * 2});
queries.push_back({new_d1v , new_d2v , d1[v] , d2[v] , 2 * j + 1});
}
vector<ll> allD2;
FOR(i , 1 , n) allD2.push_back(d2[i]);
FOR(i , 0 , 2 * p - 1) allD2.push_back(queries[i].b);
sort(allD2.begin() , allD2.end());
allD2.erase(unique(allD2.begin() , allD2.end()) , allD2.end());
M = allD2.size();
vector<pll> pts(n);
FOR(i , 0 , n - 1){
pts[i] = {d1[i + 1] , d2[i + 1]};
}
sort(pts.begin() , pts.end() , cmp);
sort(queries.begin() ,queries.end() , cmp2);
vector<int> compPt;
compPt.reserve(n);
vector<int> compQ;
compQ.reserve(2 * p);
FOR(i , 0 , n - 1) compPt.push_back(getd2id(allD2 , pts[i].second));
for(auto &q : queries) compQ.push_back(getd2id(allD2 , q.b));
int j = 0;
FOR(i , 0 , (int) queries.size() - 1){
while(j < n && pts[j].fi <= queries[i].a){
update(compPt[j] , 1);
j++;
}
int cnt = get(compQ[i]);
if(queries[i].orga > queries[i].a || queries[i].orgb > queries[i].b) ++cnt;
ans[queries[i].id] = cnt;
}
FOR(j , 0 , p - 1) cout << ans[2 * j] << " " << ans[2 * j + 1] << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBtYXhuIDEwMDAwNQojZGVmaW5lIEZPUihpICwgYSAsIGIpIGZvcihpbnQgaSA9IGEgOyBpIDw9IGI7IGkrKykKI2RlZmluZSBGQVNUIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIHBsbCBwYWlyPGxsLGxsPgojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCgppbnQgbiAsIG0gLCBwICwgVVttYXhuXSAsIFZbbWF4bl0gLCBhbnNbMyAqIG1heG5dICwgTTsKCmxsIGJpdFszICogbWF4bl07Cgp2b2lkIHVwZGF0ZShpbnQgaWR4ICwgbGwgdmFsKXsKICAgIHdoaWxlKGlkeCA8PSAyICogTSl7CiAgICAgICAgYml0W2lkeF0gKz0gdmFsOwogICAgICAgIGlkeCArPSBpZHggJiAoLWlkeCk7CiAgICB9Cn0KCmxsIGdldChpbnQgaWR4KXsKICAgIGxsIHN1bSA9IDA7CiAgICB3aGlsZShpZHggPiAwKXsKICAgICAgICBzdW0gKz0gYml0W2lkeF07CiAgICAgICAgaWR4IC09IGlkeCAmICgtaWR4KTsKICAgIH0KICAgIHJldHVybiBzdW07Cn0KCnN0cnVjdCBFZGdlewogICAgaW50IHY7CiAgICBsbCB3OwogICAgaW50IGlkOwp9OwoKc3RydWN0IFN0YXRlewogICAgbGwgZGlzdDsKICAgIGludCBub2RlOwogICAgYm9vbCBvcGVyYXRvciA+IChjb25zdCBTdGF0ZSAmb3RoZXIpIGNvbnN0ewogICAgICAgIHJldHVybiBkaXN0ID4gb3RoZXIuZGlzdDsKICAgIH0KfTsKCnN0cnVjdCBOYW5oX2N1dGl7CiAgICBsbCBhICwgYiAsIG9yZ2EgLCBvcmdiOwogICAgaW50IGlkOwp9OwoKdmVjdG9yPEVkZ2U+IGFkalttYXhuXTsKCmNvbnN0IGxsIElORiA9IDFlMTg7Cgp2ZWN0b3I8bGw+IGRpamtzdHJhKGludCBzKXsKICAgIHZlY3RvcjxsbD4gZChuICsgMSAsIElORik7CiAgICBwcmlvcml0eV9xdWV1ZTxTdGF0ZSAsIHZlY3RvcjxTdGF0ZT4gLCBncmVhdGVyPFN0YXRlPj4gcTsKICAgIGRbc10gPSAwOwogICAgcS5wdXNoKHtkW3NdICwgc30pOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgU3RhdGUgY3VyID0gcS50b3AoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGxsIGtjID0gY3VyLmRpc3Q7CiAgICAgICAgaW50IHUgPSBjdXIubm9kZTsKCiAgICAgICAgaWYoa2MgPiBkW3VdKSBjb250aW51ZTsKCiAgICAgICAgZm9yKGF1dG8gJnggOiBhZGpbdV0pewogICAgICAgICAgICBpbnQgdiA9IHgudjsKICAgICAgICAgICAgbGwgdyA9IHgudzsKICAgICAgICAgICAgaWYoZFt2XSA+IGRbdV0gKyB3KXsKICAgICAgICAgICAgICAgIGRbdl0gPSBkW3VdICsgdzsKICAgICAgICAgICAgICAgIHEucHVzaCh7ZFt2XSAsIHZ9KTsgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZDsKfQoKaW50IGdldGQyaWQoY29uc3QgdmVjdG9yPGxsPiAmYWxsRDIgLCBsbCB4KXsKICAgIHJldHVybiB1cHBlcl9ib3VuZChhbGxEMi5iZWdpbigpICxhbGxEMi5lbmQoKSAsIHgpIC0gYWxsRDIuYmVnaW4oKSArIDE7Cn0KCmJvb2wgY21wKHBsbCAmYSAsIHBsbCAmYil7CiAgICByZXR1cm4gYS5maSA8IGIuZmk7Cn0KCmJvb2wgY21wMihOYW5oX2N1dGkgJmMgLCBOYW5oX2N1dGkgJmQpewogICAgcmV0dXJuIGMuYSA8IGQuYTsKfQoKaW50IG1haW4oKXsKICAgIGlmKGZvcGVuKCJJTVBFVkFMLklOUCIgLCAiciIpKXsKICAgICAgICBmcmVvcGVuKCJJTVBFVkFMLklOUCIgLCAiciIgLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiSU1QRVZBTC5PVVQiICwgInciICwgc3Rkb3V0KTsKICAgIH0KCiAgICBGQVNUOwogICAgY2luID4+IG4gPj4gbSA+PiBwOwogICAgRk9SKGkgLCAxICwgbSl7CiAgICAgICAgbGwgdzsKICAgICAgICBjaW4gPj4gVVtpXSA+PiBWW2ldID4+IHc7CiAgICAgICAgYWRqW1VbaV1dLnB1c2hfYmFjayh7VltpXSAsIHcgLCBpfSk7CiAgICAgICAgYWRqW1ZbaV1dLnB1c2hfYmFjayh7VVtpXSAsIHcgLCBpfSk7CiAgICB9CgogICAgdmVjdG9yPGxsPiBkMSA9IGRpamtzdHJhKDEpOwogICAgdmVjdG9yPGxsPiBkMiA9IGRpamtzdHJhKDIpOwoKICAgIHZlY3RvcjxOYW5oX2N1dGk+IHF1ZXJpZXM7CiAgICBxdWVyaWVzLnJlc2VydmUoMiAqIHApOwoKICAgIEZPUihqICwgMCAsIHAgLSAxKXsKICAgICAgICBpbnQgdDsKICAgICAgICBsbCB3OwogICAgICAgIGNpbiA+PiB0ID4+IHc7CiAgICAgICAgaW50IHUgPSBVW3RdOwogICAgICAgIGludCB2ID0gVlt0XTsKICAgICAgICBsbCBuZXdfZDF1ID0gbWluKGQxW3VdICwgZDFbdl0gKyB3KTsKICAgICAgICBsbCBuZXdfZDF2ID0gbWluKGQxW3ZdICwgZDFbdV0gKyB3KTsKICAgICAgICBsbCBuZXdfZDJ1ID0gbWluKGQyW3VdICwgZDJbdl0gKyB3KTsKICAgICAgICBsbCBuZXdfZDJ2ID0gbWluKGQyW3ZdICwgZDJbdV0gKyB3KTsKICAgICAgICBxdWVyaWVzLnB1c2hfYmFjayh7bmV3X2QxdSAsIG5ld19kMnUgLCBkMVt1XSAsIGQyW3VdICwgaiAqIDJ9KTsKICAgICAgICBxdWVyaWVzLnB1c2hfYmFjayh7bmV3X2QxdiAsIG5ld19kMnYgLCBkMVt2XSAsIGQyW3ZdICwgMiAqIGogKyAxfSk7CiAgICB9CiAgICB2ZWN0b3I8bGw+IGFsbEQyOwoKICAgIEZPUihpICwgMSAsIG4pIGFsbEQyLnB1c2hfYmFjayhkMltpXSk7CiAgICBGT1IoaSAsIDAgLCAyICogcCAtIDEpIGFsbEQyLnB1c2hfYmFjayhxdWVyaWVzW2ldLmIpOwoKICAgIHNvcnQoYWxsRDIuYmVnaW4oKSAsIGFsbEQyLmVuZCgpKTsKICAgIGFsbEQyLmVyYXNlKHVuaXF1ZShhbGxEMi5iZWdpbigpICwgYWxsRDIuZW5kKCkpICwgYWxsRDIuZW5kKCkpOwogICAgTSA9IGFsbEQyLnNpemUoKTsKCiAgICB2ZWN0b3I8cGxsPiBwdHMobik7CiAgICBGT1IoaSAsIDAgLCBuIC0gMSl7CiAgICAgICAgcHRzW2ldID0ge2QxW2kgKyAxXSAsIGQyW2kgKyAxXX07CiAgICB9CgogICAgc29ydChwdHMuYmVnaW4oKSAsIHB0cy5lbmQoKSAsIGNtcCk7CiAgICBzb3J0KHF1ZXJpZXMuYmVnaW4oKSAscXVlcmllcy5lbmQoKSAsIGNtcDIpOwoKCiAgICB2ZWN0b3I8aW50PiBjb21wUHQ7CiAgICBjb21wUHQucmVzZXJ2ZShuKTsKICAgIHZlY3RvcjxpbnQ+IGNvbXBROwogICAgY29tcFEucmVzZXJ2ZSgyICogcCk7CgogICAgRk9SKGkgLCAwICwgbiAtIDEpIGNvbXBQdC5wdXNoX2JhY2soZ2V0ZDJpZChhbGxEMiAsIHB0c1tpXS5zZWNvbmQpKTsKICAgIGZvcihhdXRvICZxIDogcXVlcmllcykgY29tcFEucHVzaF9iYWNrKGdldGQyaWQoYWxsRDIgLCBxLmIpKTsKCiAgICBpbnQgaiA9IDA7CiAgICBGT1IoaSAsIDAgLCAoaW50KSBxdWVyaWVzLnNpemUoKSAtIDEpewogICAgICAgIHdoaWxlKGogPCBuICYmIHB0c1tqXS5maSA8PSBxdWVyaWVzW2ldLmEpewogICAgICAgICAgICB1cGRhdGUoY29tcFB0W2pdICwgMSk7CiAgICAgICAgICAgIGorKzsKICAgICAgICB9CgogICAgICAgIGludCBjbnQgPSBnZXQoY29tcFFbaV0pOwogICAgICAgIGlmKHF1ZXJpZXNbaV0ub3JnYSA+IHF1ZXJpZXNbaV0uYSB8fCBxdWVyaWVzW2ldLm9yZ2IgPiBxdWVyaWVzW2ldLmIpICsrY250OwogICAgICAgIGFuc1txdWVyaWVzW2ldLmlkXSA9IGNudDsKICAgIH0KCiAgICBGT1IoaiAsIDAgLCBwIC0gMSkgY291dCA8PCBhbnNbMiAqIGpdIDw8ICIgIiA8PCBhbnNbMiAqIGogKyAxXSA8PCAiXG4iOwp9Cg==