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

const long long MOD = 1e9+7;
const long long N = 4e4+1;
 
typedef long long ll;
typedef long double ld;


void test_case() { 
    ll n;
    cin >> n;
    vector<ll> v(n);
    ll zc = 0;
    map<ll,vector<ll>> mm;
    for(int i = 0; i < n; i++) {
        cin >> v[i];
        v[i] %= 200;
        if(v[i] == 0)
            zc = i+1;
        mm[v[i]].push_back(i);
    }
    bool flag = 0;
    ll x1, x2;
    for(auto u : mm) {
        if(u.second.size() == 1) {
            continue;
        } 
        flag = 1;
        x1 = u.second[0]+1, x2 = u.second[1]+1;
    }
    if(flag) {
        cout << "Yes\n";
        cout << 1 << ' ' << x1 << '\n';
        cout << 1 << ' ' << x2 << '\n';
        return;
    }
    vector<ll> is(N, 0);
    vector<array<ll,3>> who[N];
    is[0] = 1;
    for(int i = 0; i < n; i++) {
        for(int j = N-1; j >= 0; j--) {
            if(v[i] <= j) {
                is[j] += is[j-v[i]];
                if(is[j-v[i]]) {
                    who[j].push_back({v[i], j, i+1});
                }
            }
        }
    }
    // if(!zc) {
    //     is[0] = 0;
    // }
    for(int i = 0; i < N; i++) {
        ll ww = i%200;
        if(i != ww) {
            for(auto u : who[i]) {
                who[ww].push_back(u);
            }
            is[ww] += is[i];
        }
        if(is[ww] > 1 && who[ww].size() > 1) {
            i = ww;
            vector<ll> a1, a2;
            ll curr = who[i][0][1];
            a1.push_back(who[i][0][2]);
            curr -= who[i][0][0];
            if(curr != 0) {
                for(int j = who[i][0][2]-2; j >= 0; j--) {
                    if(v[j] <= curr && is[curr] && is[curr-v[j]]) {
                        a1.push_back(j+1);
                        curr -= v[j];
                    } 
                    if(curr == 0)
                        break;
                }
            }
            curr = who[i][1][1];
            a2.push_back(who[i][1][2]);
            curr -= who[i][1][0];
            if(curr != 0) {
                for(int j = who[i][1][2]-2; j >= 0; j--) {
                    if(v[j] <= curr && (is[curr-v[j]] || curr == v[j])) {
                        a2.push_back(j+1);
                        curr -= v[j];
                    } 
                    if(curr == 0)
                        break;
                }
            }
            sort(a1.begin(), a1.end());
            sort(a2.begin(), a2.end());
            cout << "Yes\n";
            cout << a1.size() << ' ';
            for(auto u : a1) {
                cout << u << ' ';
            }
            cout << '\n';
            cout << a2.size() << ' ';
            for(auto u : a2) {
                cout << u << ' ';
            }
            cout << '\n';
            return;
        }
    }
    cout << "No\n";
    
}

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    int tc = 1;
    // cin >> tc;
    while(tc--)
        test_case();
    return 0;
}
#include<stdio.h>
#define rep(i,N) for(int i=0;i<(int)N;i++)
static inline int IN(void)
{
  int x=0,f=1,c=getchar();while(c<48||c>57){if(c==45){f=-f;}c=getchar();}
  while(c>47&&c<58){x=x*10+c-48,c=getchar();}return f*x;
}
static inline void OUT(int x){if(x<0){putchar('-'),x=-x;}if(x>=10){OUT(x/10);}putchar(x-x/10*10+48);}
int main(void)
{
  int N=IN(),A[N],bk[200][8]={{0}},pos[200]={0},count=N<8?N:8,s[8]={},sum=0,sz=0;
  rep(i,N){A[i]=IN();}
  rep(i,1<<count)
  {
    sum=0;s[0]=s[1]=s[2]=s[3]=s[4]=s[5]=s[6]=s[7]=0;sz=0;
    rep(j,count)if(i&(1<<j)){s[sz++]=j+1;sum+=A[j];sum-=sum/200*200;}
    if(pos[sum])
    {
      puts("Yes");OUT(pos[sum]);putchar(' ');
      rep(j,pos[sum]){OUT(bk[sum][j]);putchar(' ');}puts("");OUT(sz);putchar(' ');
      rep(j,sz){OUT(s[j]);putchar(' ');}return 0;
    }
    else{rep(j,sz){bk[sum][j]=s[j];}pos[sum]=sz;}
  }
  return !puts("No");
}