#include <bits/stdc++.h>
using namespace std;
const int maxn=10005;
int w[maxn];
int ans;
int main()
{
int n;
cin>>n;
int u[n-1],v[n-1];
int dp[n][n],a[n][n];
for(int i=1;i<=n-1;i++)
{
cin>>u[i]>>v[i];
a[u[i]][v[i]]=1;
}
for(int i=1;i<=n;i++)
{
cin>>w[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]==1)
{
if(w[i]-w[j]==2||w[j]-w[i]==2)dp[i][j]=max(dp[i][j],w[i]*w[j]);
ans=max(ans,dp[i][j]);
}
}
}
cout<<ans;
return 0;
}