#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int v[3000],ans,book[3000];
vector<int> ed[10005];
void dfs(int step,int x,int score){
cout<<"";
if(step==5){
bool flag=false;
for(int i=0;i<ed[x].size();i++){
//cout<<ed[x][i]<<" ";
if(ed[x][i]==1){
flag=true;
break;
}
}
//cout<<"flag is"<<flag;
//cout<<endl;
if(flag){
ans=max(ans,score);
}
return ;
}
for(int i=0;i<ed[x].size();i++){
if(book[i]||ed[x][i]==1) continue;
book[ed[x][i]]=true;
dfs(step+1,ed[x][i],score+v[ed[x][i]]);
book[ed[x][i]]=false;
}
return ;
}
int main(){
//freopen("8817.in","r",stdin);
//freopen(" .out","w",stdout);
cin>>n>>m>>k;
for(int i=2;i<=n;i++){
cin>>v[i];
}
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
ed[a].push_back(b);
ed[b].push_back(a);
}
// for(int i=1;i<=n;i++){
// printf("%d点连接着",i);
// for(int j=0;j<ed[i].size();j++){
// cout<<ed[i][j]<<" ";
// }
// cout<<endl;
// }
dfs(1,1,0);
cout<<ans;
return 0;
}
rt啊,本来想打个无脑dfs试一试的,怎么就寄了呢