#include <bits/stdc++.h>

using namespace std;

#define MAXN 200010

long long n;
long long a[MAXN];
vector<long long> adj[MAXN];

int main()
{
    ios_base::sync_with_stdio(false);
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for (long long i=1;i<=n;i++) cin>>a[i];
    for (long long i=1;i<n;i++)
    {
        long long x,y;cin>>x>>y;
        adj[x].push_back(y);
        adj[y].push_back(x);
    }
    ///2.podzadatak
    long long prvi=LLONG_MAX,pozprvi=-1;
    long long drugi=LLONG_MAX,pozdrugi=-1;
    for (long long i=2;i<=n;i++)
    {
        if (a[i]<=prvi)
        {
            drugi=prvi;pozdrugi=pozprvi;
            prvi=a[i];pozprvi=i;
        }
        else if (a[i]>prvi and a[i]<drugi) {drugi=a[i];pozdrugi=i;}
    }
    long long ans1=prvi+drugi;
    long long ans2=a[1]+prvi;
    if (ans1<=ans2)
    {
        cout<<ans1<<endl;
        cout<<2<<endl;
        cout<<pozprvi<<" "<<pozdrugi<<endl;
        cout<<0<<endl;
    }
    else
    {
        cout<<ans2<<endl;
        cout<<1<<endl;cout<<pozprvi<<endl;
        cout<<1<<endl;cout<<pozdrugi<<endl;
    }
}