#include <iostream>
#include<bits/stdc++.h>
using namespace std;
//graph bfs
int main() {
// your code goes here
int n ; int m ;
cin>>n>>m;
vector<vector<int>>adj(n+1);
vector<bool>vis(n+1,false);
int level[n+1];
for(int i = 0 ; i < m ; i++){
int u ; int v ;
cin>>u>>v;
adj[u].push_back(v);
adj[v].push_back(u);
}
vector<int>val(n+1);
for(int i = 1 ; i<=n;i++)cin>>val[i];
int src = 1;
vis[src]=true;
queue<int>q;
q.push(src);
int child[n+1];
int count1[n+1]={0};
count1[1]=val[1];
while(!q.empty()){
int curr = q.front();
q.pop();
int count = 0 ;
for(auto adjacent : adj[curr]){
if(!vis[adjacent]){
vis[adjacent]=true;
q.push(adjacent);
count1[adjacent]=val[adjacent]+count1[curr];
}
}
}
cout<<count1[8]<<endl;
cout<<count1[5]<<endl;
cout<<count1[1]<<endl;
cout<<count1[7]<<endl;
cout<<count1[6]<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vZ3JhcGggYmZzCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IG4gOyBpbnQgbSA7IAoJY2luPj5uPj5tOwoJdmVjdG9yPHZlY3RvcjxpbnQ+PmFkaihuKzEpOwogICAgdmVjdG9yPGJvb2w+dmlzKG4rMSxmYWxzZSk7CiAgICBpbnQgbGV2ZWxbbisxXTsKCWZvcihpbnQgaSA9IDAgOyBpIDwgbSA7IGkrKyl7CgkJaW50IHUgOyBpbnQgdiA7IAoJCWNpbj4+dT4+djsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsKCQlhZGpbdl0ucHVzaF9iYWNrKHUpOwoJfQogICAgdmVjdG9yPGludD52YWwobisxKTsKICAgIGZvcihpbnQgaSA9IDEgOyBpPD1uO2krKyljaW4+PnZhbFtpXTsKCWludCBzcmMgPSAxOyAKCXZpc1tzcmNdPXRydWU7CglxdWV1ZTxpbnQ+cTsKCXEucHVzaChzcmMpOwoJaW50IGNoaWxkW24rMV07CglpbnQgY291bnQxW24rMV09ezB9OwoJY291bnQxWzFdPXZhbFsxXTsKCXdoaWxlKCFxLmVtcHR5KCkpewoJCWludCBjdXJyID0gcS5mcm9udCgpOwoJCXEucG9wKCk7CgkJaW50IGNvdW50ID0gMCA7IAoJCWZvcihhdXRvIGFkamFjZW50IDogYWRqW2N1cnJdKXsKCQkJaWYoIXZpc1thZGphY2VudF0pewoJCQkJdmlzW2FkamFjZW50XT10cnVlOwoJCQkJcS5wdXNoKGFkamFjZW50KTsKCQkJICAgIGNvdW50MVthZGphY2VudF09dmFsW2FkamFjZW50XStjb3VudDFbY3Vycl07CgkgICAgIH0KCX0KCX0KCiBjb3V0PDxjb3VudDFbOF08PGVuZGw7CiBjb3V0PDxjb3VudDFbNV08PGVuZGw7CiBjb3V0PDxjb3VudDFbMV08PGVuZGw7CiBjb3V0PDxjb3VudDFbN108PGVuZGw7CiBjb3V0PDxjb3VudDFbNl08PGVuZGw7CgpyZXR1cm4gMDsgCn0=