#include <bits/stdc++.h>
using namespace std;
int n,a[200005],x,y;
bool boja[200005];
long long sol,sviOstali;
vector<int>v[200005];
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n;
    for(int i=1; i<=n; i++){
        cin >> a[i];
        if(i>1)sviOstali+=a[i];
    }
    for(int i=1; i<n; i++){
        cin >> x >> y;
        //v[x].push_back(y);
        //v[y].push_back(x);
    }
    if(a[1]>sviOstali){
        cout << sviOstali << "\n" << n-1 << "\n";
        for(int i=2; i<=n; i++)
            cout << i << " ";
        cout << "\n0\n";
    }
    else{
        cout << a[1] << "\n1\n1\n0\n";
    }
    return 0;
}
//neofarban cvor ne sme imati samo sa jedne strane obojenog suseda
//ne sme da postoji mogucnost da se ofarba grana koja ce biti povezana sa jos tri ili vise

//prvo:ofarbati sve cvorove koji su povezani sa 3+ druga cvora
//proveriti da li prvi uslov vazi za neki od preostalih cvorova