#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define endl '\n'
typedef pair<int, int> P;
typedef long long ll;

int dp[300][300];
int n;
vector<int> bucket;

bool valid(vector<int> x, vector<int> y)
{
    if (x.size() == 0 || y.size() == 0)
    {
        return false;
    }
    if (x.size() != y.size())
    {
        return true;
    }
    rep(i, x.size())
    {
        if (x[i] != y[i])
        {
            return true;
        }
    }
    return false;
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    rep(i, n)
    {
        int t;
        cin >> t;
        bucket.push_back(t % 200);
    }
    dp[0][0] = 1;
    rep(i, n)
    {
        rep(j, 200)
        {
            if (dp[i][j] > 0)
            {
                dp[i + 1][j] += dp[i][j];
                dp[i + 1][(j + bucket[i]) % 200] += dp[i][j];
            }
        }
    }
    while (true)
    {
        int s = 0, t = 0;
        bool cant = true;
        rep(i, n + 1)
        {
            rep(j, 200)
            {
                if (j == 0 && dp[i][j] > 2)
                {
                    s = i;
                    t = j;
                    cant = false;
                }
                if (j > 0 && dp[i][j] > 1)
                {
                    s = i;
                    t = j;
                    cant = false;
                }
            }
        }
        if (cant)
        {
            cout << "No" << endl;
            return 0;
        }
        int i = s;
        int j = t;
        vector<int> x;
        while (i != 0 && j != 0)
        {
            if (dp[i - 1][(j + 200 - bucket[i - 1]) % 200] > 0)
            {
                j = (j + 200 - bucket[i - 1]) % 200;
                x.push_back(i);
                i--;
            }
            else
            {
                i--;
            }
        }
        i = s;
        j = t;
        vector<int> y;
        while (i != 0 && j != 0)
        {
            if (y.empty() && dp[i - 1][j] > 1)
            {
                i--;
            }
            else if (y.empty() && dp[i - 1][(j + 200 - bucket[i - 1]) % 200] > 1)
            {
                j = (j + 200 - bucket[i - 1]) % 200;
                y.push_back(i);
                i--;
            }
            else if (dp[i - 1][j] > 0)
            {
                i--;
            }
            else
            {
                j = (j + 200 - bucket[i - 1]) % 200;
                y.push_back(i);
                i--;
            }
        }
        if (valid(x, y))
        {
            reverse(x.begin(), x.end());
            reverse(y.begin(), y.end());
            cout << "Yes" << endl;
            cout << x.size();
            for (auto xi : x)
            {
                cout << ' ' << xi;
            }
            cout << endl;
            cout << y.size();
            for (auto yi : y)
            {
                cout << ' ' << yi;
            }
            cout << endl;
            return 0;
        }
        else
        {
            dp[s][t] = 0;
        }
    }
}
#include <bits/stdc++.h>
#define pb(x) push_back(x)
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define F(w,x,y) for(ll w=x; w<y; w++)
#define endl "\n"
#define mod 1000000007
typedef long long ll;
typedef long double ld;
using namespace std;

void play()
{
    ll n;
    cin>>n;

    vector <ll> v(n);

    F(i,0,n)
    cin>>v[i];

    map <ll,ll> mp;

    ll total=1<<(min(n,9LL));

    ll ans=-1;

    F(i,1,total)
    {
        ll sum=0;

        F(j,0,(min(n,9LL)))
        {
            if(i&(1<<j))
            {
                sum+=v[j];
            }
        }

        mp[sum%200]++;

        if(mp[sum%200]>1)
        {
            ans=(sum%200);
            break;
        }
    }

    if(ans==-1)
    {
        cout<<"No\n";
        return;
    }

    cout<<"Yes\n";
    ll f=0;

    F(i,1,total)
    {
        ll sum=0, c=0;

        F(j,0,(min(n,9LL)))
        {
            if(i&(1<<j))
            {
                sum+=v[j];
                c++;
            }
        }

        if(ans==sum%200)
        {
            cout<<c<<" ";
            F(j,0,(min(n,9LL)))
            {
                if(i&(1<<j))
                {
                    cout<<j+1<<" ";
                }
            }
            cout<<endl;
            f++;
            if(f==2)
                break;
        }
    }

}

int main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll t;
    t=1;
    //cin>>t;
    F(i,1,t+1)
    {
        //cout<<"Case #"<<i<<": ";
        play();
    }
    return 0;
}
