#include using namespace std; using ll = long long; using ull = unsigned long long; const long long MOD = 1000000007; const long double PI = 3.14159265358979; const long long INF = 1LL<<60; template bool chmax(T &a, const T& b){if(a < b){a = b;return true;}return false;} template bool chmin(T &a, const T& b){if(a > b){a = b;return true;}return false;} bool is_prime(long long N){if(N==1) return false;for(long long i=2; i*i <= N; i++){if(N%i==0)return false;}return true;} long long gcd(long long a, long long b){if (b == 0) return a;else return gcd(b, a % b);} template using min_priority_queue = priority_queue, greater>; #define int long long vector> T; vector siz; int rec(int now, int par){ if(siz[now]!=-1) return siz[now]; int res = 1; for(auto child: T[now]){ if(par==child) continue; res += rec(child, now); } return siz[now] = res; } int32_t main(){ int N, Q; cin >> N >> Q; T.resize(N); siz.resize(N,-1); for(int i=0; i> a >> b; a--; b--; T[a].push_back(b); T[b].push_back(a); } rec(0,-1); int ans = 0; for(int q=0; q> p >> x; p--; ans += siz[p]*x; cout << ans << endl; } }