//**Anything done in love is beyond good and evil***
 
#include<bits/stdc++.h>
using namespace std;
 
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second
#define pb push_back
#define ll long long 
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define rep(i,n) for(i=0;i<n;i++)
#define forn(i, n) for (ll i = 0; i < (ll)(n); ++i)
#define for1(i, n) for (ll i = 1; i <= (ll)(n); ++i)
#define ford(i, n) for (ll i = (ll)(n) - 1; i >= 0; --i)
#define fore(i, a, b) for (ll i = (ll)(a); i <= (ll)(b); ++i)
#define fora(it,x) for(auto it:x)
#define PI 3.14159265
#define sync ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define endl "\n"
 
typedef pair<ll, ll> pii;
typedef vector<ll> vi;
typedef vector<pii> vpi;
typedef vector<vi> vvi;
typedef long long i64;
typedef vector<i64> vi64;
typedef vector<vi64> vvi64;
typedef pair<i64, i64> pi64;
typedef long double ld;
 
template<class T> bool uin(T &a, T b) { return a > b ? (a = b, true) : false; }
template<class T> bool uax(T &a, T b) { return a < b ? (a = b, true) : false; }

ll a[201];
vector<ll> v[201];
int main(){
    ll n;
    cin>>n;
    //cout<<c;

    forn(i,n) cin>>a[i];

    forn(i,n){
        vector<ll> temp[200];

        forn(j,200) temp[j]=v[j];

        for(ll j=0;j<200;j++){
            if(v[j].size()==0) continue;
            ll sum=0;
            for(auto x:v[j]) sum+=a[x];
            sum+=a[i];
            sum=sum%200;
            if(v[sum].size()!=0){
                cout<<"Yes"<<endl;
                cout<<v[sum].size()<<" ";
                for(auto x:v[sum]) cout<<x+1<<" ";
                cout<<endl;
                cout<<v[j].size()+1<<" ";
                for(auto x:v[j]) cout<<x+1<<" ";
                cout<<i+1<<endl;
                return(0);
            }
            temp[sum]=v[j];
            temp[sum].pb(i);
        }
        forn(j,200) v[j]=temp[j];
        ll sum=a[i]%200;
        //cout<<sum<<" "<<v[sum].size()<<endl;
        if(v[sum].size()!=0){
            cout<<"Yes"<<endl;
            cout<<v[sum].size()<<" ";
            for(auto x:v[sum]) cout<<x+1<<" ";
            cout<<endl;
            cout<<"1 "<<i+1<<endl;
            return(0);            
        }
        else v[sum].pb(i);


    }
    cout<<"No";
}   
#include <bits/stdc++.h>
using namespace std;
 
#define pb push_back
#define ll long long
#define pii pair<int, int>
#define sz(x) (int)x.size()
#define fr first
#define sc second
#define all(a) a.begin(), a.end()
#define int long long

const int N = 1e6 + 10;
const int INF = 2e9;
const int MOD = 1e9 + 7;

int dp[213][213][213][2][2], a[211], n;
vector <int> D, C;

int calc(int cur, int A, int B, int At, int Bt) {
    if(cur == n + 1) 
        return dp[cur][A][B][At][Bt] = (A == B && At && Bt);
    if(dp[cur][A][B][At][Bt] != -1)
        return dp[cur][A][B][At][Bt];
    int ans = 0;
    ans |= calc(cur + 1, (A + a[cur]) % 200, B, 1, Bt);
    ans |= calc(cur + 1, A, (B + a[cur]) % 200, At, 1);
    ans |= calc(cur + 1, A, B, At, Bt);
    return dp[cur][A][B][At][Bt] = ans;
}

void findAns(int cur, int A, int B, int At, int Bt) {
    if(cur == n + 1)
        return;
    if(A == B && At && Bt) {
        return;
    }
    if(dp[cur + 1][(A + a[cur]) % 200][B][1][Bt] == 1) {
        D.pb(cur);
        findAns(cur + 1, (A + a[cur]) % 200, B, 1, Bt);
    }
    else if(dp[cur + 1][A][(B + a[cur]) % 200][At][1] == 1) {
        C.pb(cur);
        findAns(cur + 1, A, (B + a[cur]) % 200, At, 1);
    }
    else 
        findAns(cur + 1, A, B, At, Bt);
}

void solve() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        a[i] %= 200;
    }
    memset(dp, -1, sizeof dp);
    if(!calc(1, 0, 0, 0, 0)) {
        cout << "No\n";
        return;
    }
    cout << "Yes\n";
    findAns(1, 0, 0, 0, 0);
    cout << sz(D) << ' ' ;
    for(auto u: D) cout << u << ' ';
    cout << '\n';
    cout << sz(C) << ' ';
    for(auto u: C) cout << u << ' ';
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    int t = 1;
    // cin >> t;
    while(t--) {
        solve();
    }
}