#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define fast_io ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

void rec(int *idx, int s, int baki, function<void(int *)> fun)
{
    if (baki == 0) fun(idx);
    else
    {
        if (s < 0) return;
        rec(idx, s - 1, baki, fun);
        idx[baki - 1] = s;
        rec(idx, s - 1, baki - 1, fun);
    }
}

void cmb(int n, int k, function<void(int *)> fun)
{
    int idx[k];
    rec(idx, n - 1, k, fun);
}

ll ok;
vector<ll> a;
vector<vector<vector<ll>>> vec;

int main()
{
    fast_io;
    #ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif

    ll n;
    cin >> n;
    a = vector<ll>(n);
    vec = vector<vector<vector<ll>>>(200);

    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        a[i] %= 200;
    }

    for (int i = 1; i <= n; i++)
    {
        ok = i;
        cmb(n, i, [](int *ind)
        {
            vector<ll> t;
            ll ts = 0;
            for (int j = 0; j < ok; j++)
            {
                t.push_back(ind[j] + 1);
                ts += a[ind[j]];
            }
            if (vec[ts % 200].size() <= 0) vec[ts % 200].push_back(t);
            else
            {
                cout << "YES" << endl;
                cout << vec[ts % 200][0].size();
                for (auto pl : vec[ts % 200][0]) cout << " " << pl;
                cout << endl;
                cout << t.size();
                for (auto pl : t) cout << " " << pl;
                cout << endl;
                exit(0);
            }
        });
    }

    cout << "NO" << endl;

    return 0;
}
/**
 *  In The Name Of God
 *  author : Behradm
 *  Idvwhu wkdq idvw, Txlfnhu wkdq txlfn, L dp Oljkwqlqj, Vshhg, L dp Vshhg :D :D
**/
#include "bits/stdc++.h"

using namespace std;

const int N = 300;
int a[N];
vector<int> cnt[N];

int n;

vector<int> Recover(int mask) {
  vector<int> res;
  for (int i = 0; i < n; i++) 
    if (mask & (1 << i))
      res.push_back(i + 1);
  return res;
}

signed main() {
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++)
    cin >> a[i], a[i] %= 200;

  int ans = -1;
  int end = 257;
  if (n <= 8)
    end = (1 << n);

  for (int mask = 1; mask < end; mask++) {
    int sum = 0;
    for (int i = 0; i < n; i++)
      if (mask & (1 << i)) { sum += a[i], sum %= 200; };

    cnt[sum].push_back(mask);
    int sz = (int) cnt[sum].size();
    if (sz == 2) {
      ans = sum;
      break;
    }
  }
  
  if (ans == -1) {
    cout << "No\n";
    return 0;
  }

  vector<int> x = Recover(cnt[ans][0]);
  vector<int> y = Recover(cnt[ans][1]);

  cout << "Yes\n";

  cout << (int) x.size() << " ";
  for (int u : x)
    cout << u << " ";
  cout << '\n';

  cout << (int) y.size() << " ";
  for (int u : y)
    cout << u << " ";
  cout << '\n';
  return 0;
}


