#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 2*1e5 + 100;
const int long long MAX_Val = 1e12 + 100;

int n;
int long long paintArray[MAX_N];
vector<int> nodes[MAX_N];

// Za izlaz
int x = 0;
vector<int> blue;
vector<int> red;

int main()
{
    // Ulaz
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>paintArray[i];
    }

    for(int i=0;i<n-1;i++)
    {
        int u,v;
        cin>>u>>v;

        u--;
        v--;

        nodes[u].push_back(v);
        nodes[v].push_back(u);
    }

    // Obrada
    // 1 test primer
    if(n < 20)
    {

    }
    else
    {
        // 2 test primer
        if(nodes[0].size() == n-1)
        {
            int long long sum = 0;
            for(int i=1;i<n;i++)
            {
                sum += paintArray[i];
            }

            if(sum > paintArray[0])
            {
                x = paintArray[0];
                blue.push_back(1);
            }
            else
            {
                x = sum;
                for(int i=1;i<n;i++)
                {
                    blue.push_back(i+1);
                }
            }
        }
        else
        {
            // 5 test primer

        }
    }


    // Izlaz
    cout<<x<<endl;
    cout<<blue.size()<<endl;
    for(int i=0;i<blue.size();i++)
    {
        cout<<blue[i]<<" ";
    }cout<<endl;
    cout<<red.size()<<endl;
    for(int i=0;i<red.size();i++)
    {
        cout<<red[i]<<" ";
    }cout<<endl;

    return 0;
}