#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
const int INF=1e9;

vector<int> G[10000];
int c[10000],num[10000],cnt;

void dfs(int v){
    num[v]=c[cnt++];
    for(int u:G[v]){
        if(num[u]==0){
            dfs(u);
        }
    }
}

int main(){
    int n;
    cin>>n;
    pair<int,int> p[n];
    for(int i=0;i<n-1;i++){
        int a,b;
        cin>>a>>b;
        --a;--b;
        G[a].push_back(b);
        G[b].push_back(a);
    }
    int ans=0;
    for(int i=0;i<n;i++){
        cin>>c[i];
        ans+=c[i];
    }
    sort(c,c+n,greater<int>());
    ans-=c[0];
    dfs(0);
    cout<<ans<<endl;
    for(int i=0;i<n;i++){
        if(i)cout<<" ";
        cout<<num[i];
    }
    cout<<endl;
}
