#include <bits/stdc++.h>
using namespace std;
int N,X,Y,MEST2;
int NIZ[200005];
long long NIZ2[200005];
vector <int> V[200005];
bool TEST2;
int main(){
    cin>>N;
    for(int i=1;i<=N;i++){
        scanf("%d",&NIZ[i]);
    }
    for(int i=1;i<N;i++){
        scanf("%d %d",&X,&Y);
        V[X].push_back(Y);
        V[Y].push_back(X);
        if(V[X].size()==N-1){TEST2=true;MEST2=X;}
        NIZ2[X]+=NIZ[Y];
        NIZ2[Y]+=NIZ[X];
    }
    if(TEST2){
        if(NIZ2[MEST2]>NIZ[MEST2]){
            printf("%d\n",NIZ[MEST2]);
            printf("%d\n",1);
            printf("%d\n",MEST2);
            printf("%d\n",0);
        }
        else{
            printf("%d\n",NIZ2[MEST2]);
            printf("%d\n",N-1);
            for(int i=1;i<=N;i++)if(i!=MEST2)printf("%d ",i);
            printf("\n");
            printf("%d\n",0);
        }
    }

 return 0;
}