#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
#define vi std::vector<int>
#define isz(v) (int) v.size()
#define pii std::pair<int, int>
#define all(v) v.begin(), v.end()
#define TIME 1.0 * clock() / CLOCKS_PER_SEC
using namespace std;
typedef long long ll;
const int MAXN = 5e3 + 7;
const int inf64 = 1e15 + 7;
template <class X, class Y>
bool maximize(X &a, const Y &b){
if(a < b){
a = b;
return true;
}
return false;
}
template <class X, class Y>
bool minimize(X &a, const Y &b){
if(a > b){
a = b;
return true;
}
return false;
}
int f[MAXN][MAXN][2], n, t, lim[MAXN], val[MAXN], par[MAXN];
int sz[MAXN];
vector<int> a[MAXN], g[MAXN];
void dfsBuild(int u, int p){
sz[u] = 1;
for(auto v : a[u]){
if(v == p) continue;
par[v] = u;
dfsBuild(v, u);
sz[u] += sz[v];
}
}
void dfs(int u, int p){
sz[u] = 1;
f[u][0][0] = f[u][0][1] = 0,
f[u][1][0] = f[u][1][1] = val[u];
int lasNode = 0;
for(int i = 1; i <= isz(g[u]) - 1; i++){
int v = g[u][i];
dfs(v, u);
sz[u] += min(sz[v], lim[v]);
for(int cntU = 0; cntU <= sz[u]; cntU++)
for(int cntV = 0; cntV <= min(sz[v], cntU); cntV++)
maximize(f[v][cntU][1], f[g[u][i - 1]][cntU - cntV][1] + f[v][cntV][0]);
lasNode = v;
}
for(int cntU = 0; cntU <= lim[u]; cntU++)
maximize(f[u][cntU][0], f[lasNode][cntU][1]);
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n;
for(int i = 1; i <= n; i++)
cin >> lim[i] >> val[i], g[i].push_back(i);
for(int i = 1; i <= n - 1; i++){
int x, y;
cin >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
} dfsBuild(1, -1);
for(int i = 2; i <= n; i++) g[par[i]].push_back(i);
for(int i = 1; i <= n; i++)
sort(g[i].begin() + 1, g[i].end(), [&] (int x, int y){return sz[x] > sz[y];});
memset(f, -0x3f, sizeof(f));
f[0][0][0] = f[0][0][1] = 0;
dfs(1, -1);
int ans = 0;
for(int cnt = 0; cnt <= lim[1]; cnt++)
maximize(ans, f[1][cnt][0]);
cout << ans;
cerr << endl << "------------" << endl;
cerr << "Time: " << TIME << " s" << endl;
cerr << "------------" << endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgdmkgc3RkOjp2ZWN0b3I8aW50PgojZGVmaW5lIGlzeih2KSAoaW50KSB2LnNpemUoKQojZGVmaW5lIHBpaSBzdGQ6OnBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSwgdi5lbmQoKQojZGVmaW5lIFRJTUUgMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IE1BWE4gPSA1ZTMgKyA3Owpjb25zdCBpbnQgaW5mNjQgPSAxZTE1ICsgNzsKCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtYXhpbWl6ZShYICZhLCBjb25zdCBZICZiKXsKICAgICAgICBpZihhIDwgYil7CiAgICAgICAgICAgIGEgPSBiOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBib29sIG1pbmltaXplKFggJmEsIGNvbnN0IFkgJmIpewogICAgICAgIGlmKGEgPiBiKXsKICAgICAgICAgICAgYSA9IGI7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgppbnQgZltNQVhOXVtNQVhOXVsyXSwgbiwgdCwgbGltW01BWE5dLCB2YWxbTUFYTl0sIHBhcltNQVhOXTsKaW50IHN6W01BWE5dOwp2ZWN0b3I8aW50PiBhW01BWE5dLCBnW01BWE5dOwoKdm9pZCBkZnNCdWlsZChpbnQgdSwgaW50IHApewogICAgc3pbdV0gPSAxOwogICAgZm9yKGF1dG8gdiA6IGFbdV0pewogICAgICAgIGlmKHYgPT0gcCkgY29udGludWU7CiAgICAgICAgcGFyW3ZdID0gdTsKICAgICAgICBkZnNCdWlsZCh2LCB1KTsKICAgICAgICBzelt1XSArPSBzelt2XTsKICAgIH0KfQoKdm9pZCBkZnMoaW50IHUsIGludCBwKXsKICAgIHN6W3VdID0gMTsKICAgIGZbdV1bMF1bMF0gPSBmW3VdWzBdWzFdID0gMCwKICAgIGZbdV1bMV1bMF0gPSBmW3VdWzFdWzFdID0gdmFsW3VdOwoKICAgIGludCBsYXNOb2RlID0gMDsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGlzeihnW3VdKSAtIDE7IGkrKyl7CiAgICAgICAgaW50IHYgPSBnW3VdW2ldOwogICAgICAgIGRmcyh2LCB1KTsKICAgICAgICBzelt1XSArPSBtaW4oc3pbdl0sIGxpbVt2XSk7CgoKICAgICAgICBmb3IoaW50IGNudFUgPSAwOyBjbnRVIDw9IHN6W3VdOyBjbnRVKyspCiAgICAgICAgICAgIGZvcihpbnQgY250ViA9IDA7IGNudFYgPD0gbWluKHN6W3ZdLCBjbnRVKTsgY250VisrKQogICAgICAgICAgICAgICAgbWF4aW1pemUoZlt2XVtjbnRVXVsxXSwgZltnW3VdW2kgLSAxXV1bY250VSAtIGNudFZdWzFdICsgZlt2XVtjbnRWXVswXSk7CgoKICAgICAgICBsYXNOb2RlID0gdjsKICAgIH0KCgogICAgZm9yKGludCBjbnRVID0gMDsgY250VSA8PSBsaW1bdV07IGNudFUrKykKICAgICAgICBtYXhpbWl6ZShmW3VdW2NudFVdWzBdLCBmW2xhc05vZGVdW2NudFVdWzFdKTsKCn0KCnNpZ25lZCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBjaW4gPj4gbjsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICBjaW4gPj4gbGltW2ldID4+IHZhbFtpXSwgZ1tpXS5wdXNoX2JhY2soaSk7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuIC0gMTsgaSsrKXsKICAgICAgICBpbnQgeCwgeTsKCiAgICAgICAgY2luID4+IHggPj4geTsKICAgICAgICBhW3hdLnB1c2hfYmFjayh5KTsKICAgICAgICBhW3ldLnB1c2hfYmFjayh4KTsKICAgIH0gZGZzQnVpbGQoMSwgLTEpOwogICAgZm9yKGludCBpID0gMjsgaSA8PSBuOyBpKyspIGdbcGFyW2ldXS5wdXNoX2JhY2soaSk7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgc29ydChnW2ldLmJlZ2luKCkgKyAxLCBnW2ldLmVuZCgpLCBbJl0gKGludCB4LCBpbnQgeSl7cmV0dXJuIHN6W3hdID4gc3pbeV07fSk7CgogICAgbWVtc2V0KGYsIC0weDNmLCBzaXplb2YoZikpOwogICAgZlswXVswXVswXSA9IGZbMF1bMF1bMV0gPSAwOwoKICAgIGRmcygxLCAtMSk7CgogICAgaW50IGFucyA9IDA7CgogICAgZm9yKGludCBjbnQgPSAwOyBjbnQgPD0gbGltWzFdOyBjbnQrKykKICAgICAgICBtYXhpbWl6ZShhbnMsIGZbMV1bY250XVswXSk7CgogICAgY291dCA8PCBhbnM7CgogICAgY2VyciA8PCBlbmRsIDw8ICItLS0tLS0tLS0tLS0iIDw8IGVuZGw7CiAgICBjZXJyIDw8ICJUaW1lOiAiIDw8IFRJTUUgPDwgIiBzIiA8PCBlbmRsOwogICAgY2VyciA8PCAiLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwoKfQo=