#include<bits/stdc++.h>
#define ll long long
#define P 10007
using namespace std;
const int N=2e5+7;
vector<int> e[N],p[N];
int n,a[N],fa[N],gfa[N];
void dfs(int x,int Fa)
{
fa[x]=Fa;
if(Fa!=-1)
gfa[x]=fa[Fa];
for(auto it:e[x])
{
if(it!=Fa)
dfs(it,x);
}
return;
}
void initp()
{
for(int i=1;i<=n;i++)
{
if(~gfa[i])
p[i].push_back(gfa[i]);
if(~fa[i])
{
for(auto it:e[fa[i]])
{
if(it!=i)
p[i].push_back(it);
}
}
}
return;
}
int main()
{
scanf("%d",&n);
for(int i=1,u,v;i<n;i++)
{
scanf("%d%d",&u,&v);
e[u].push_back(v);
e[v].push_back(u);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
gfa[1]=-1;
dfs(1,-1);
initp();
ll maxn=LONG_LONG_MIN,ans=0;
for(int i=1;i<=n;i++)
{
for(auto it:p[i])
{
ans=(ans+(a[i]*a[it]))%P;
maxn=max(maxn,(ll)a[i]*a[it]);
}
}
printf("%lld %lld",maxn,ans%P);
return 0;
}