#include <bits/stdc++.h>
using namespace std;

/*
5
2 2 2 2 2
1 2
2 3
3 4
4 5
*/

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    vector<vector<int>> veze;
    vector<int> tezine;
    int n, a, b;
    scanf("%d", &n);
    vector<int> boje(n, -1);
    tezine.resize(n);
    veze.resize(n);
    for(int i = 0; i < n; i++) {
        scanf("%d", &tezine[i]);
    }
    for(int i = 0; i < n - 1; i++) {
        scanf("%d %d", &a, &b);
        a--;
        b--;
        veze[a].push_back(b);
        veze[b].push_back(a);
    }
    int litri = 0;
    vector<int> crvena;
    vector<int> plava;

    if(veze[0].size() == n - 1) {
        // slucaj 1
        plava.push_back(0);
    }
    else {
        for(int i = 1; i < n; i += 2) {
            plava.push_back(i);
        }
    }

    for(int i = 0; i < crvena.size(); i++) {
        litri += tezine[crvena[i]];
    }
    for(int i = 0; i < plava.size(); i++) {
        litri += tezine[plava[i]];
    }

    printf("%d\n%d\n", litri, crvena.size());
    for(int i = 0; i < crvena.size(); i++) {
        printf("%d ", crvena.at(i)+1);
    }
    printf("\n%d\n", plava.size());
    for(int i = 0; i < plava.size(); i++) {
        printf("%d ", plava.at(i)+1);
    }
    printf("\n");
    return 0;
}