// D - Happy Birthday! 2
#include <bits/stdc++.h>
using namespace std;
using vi = vector<int>;
#define rep(i,e) for(int i=0;i<(e);++i)

void print(int n, vi v){ cout<< n <<" "; rep(i, n) cout<< v[i] << (i<n-1? " ":"\n"); }

int main(){
	int n; cin>>n;
	vi A(n); for(int&x:A) cin>>x;
	vector<vi> B(200);
	for(int d=min(8, n), bit=1; bit<1<<d; ++bit){ // 8bit: 2^8=256
		int64_t r = 0; vi C;
		rep(i, d) if(bit>>i & 1) r += A[i], C.push_back(i+1);
		r %= 200;
		if(B[r].size()){
			puts("Yes");
			print(B[r].size(), B[r]);
			print(C.size(), C);
			return 0;
		}
		B[r] = C;
	}
	puts("No");
}

// KNOW NOTHING!
#include <bits/stdc++.h>
#define ll long long int
#define F(i,j,k,in) for(int i=j;i<k;i+=in)
#define DF(i,j,k,in) for(int i=j;i>=k;i-=in)
#define feach(it,l) for (auto it = l.begin(); it != l.end(); ++it)
#define fall(a) a.begin(),a.end()
#define sz(x) (int)x.size()
#define szs(x) (int)x.length()
#define pb push_back
#define ub upper_bound
#define lb lower_bound
#define eq equal_range
#define fs first
#define ss second
#define ins insert
#define mkp make_pair
#define endl "\n"
using namespace std;
typedef vector<ll> vll;
typedef vector<int> vin;
typedef vector<char> vch;
typedef vector<string> vst;
typedef set<ll> sll;
typedef set<int> sint;
typedef set<char> sch;
typedef set<string> sst;
typedef queue<ll> qll;
typedef queue<int> qin;
typedef deque<ll> dqll;
typedef deque<int> dqint;
typedef priority_queue<ll> pqll;
typedef priority_queue<int> pqin;
typedef map<ll,ll> mpll;
typedef map<int,int> mpin;
typedef pair<ll,ll> pll;
typedef pair<int,int> pin;
const ll MOD=1000000007;
const long double PI=3.1415926535897932384626433832795;
ll pwr(ll b,ll p){ll res=1;while(p){if(p&1) {res*=b; p--;}else{b*=b; p>>=1;}}return res;}
ll mpwr(ll b,ll p){ll res=1;while(p){if(p&1) {res=(res*b)%MOD; p--;}else{b=(b*b)%MOD; p>>=1;}}return res;}
int msb (int n) {return 31-__builtin_clz(n);}
ll msbl (ll n) {return 63-__builtin_clzll(n);}
int lsb (int n) {return __builtin_ctz(n);}
ll  lsbl (ll n) {return __builtin_ctzll(n);}
int setbit (int n) {return __builtin_popcount(n);}
ll setbitl (ll n) {return __builtin_popcountll(n);}
int main()
{
/*
freopen ("input.txt","r","stdin");
freopen ("output.txt","w","stdout");
*/
ios_base::sync_with_stdio(false) , cin.tie(NULL) , cout.tie(NULL);
int n; cin>>n; 
vll a (n);
F (i,0,n,1) cin>>a[i];
int m = min (10,n);
int ok =0;
F (i,1,1<<m,1) {
	F (j,1,1<<m,1) {
		if (i!=j) {
		ll s1 = 0, s2=0;
		vin a1 , a2;
		F (k,0,m,1) {
			if (i&(1<<k)) {
				s1+=a[k];
				a1.pb (k);
			}
			if (j&(1<<k)) {
				s2+=a[k];
				a2.pb (k);
			}
		}
		if (s1%200 == s2%200) {
			ok =1; 
			cout<<"YES"<<endl;
			cout<<sz(a1)<<" ";
			for (auto e : a1) cout<<e+1<<" ";
		    cout<<endl<<sz(a2)<<" ";
		    for (auto e : a2) cout <<e+1<<" ";
		    ok=1;
		    break;

		}
	}
}
if (ok) break;
}	
if (!ok) cout<<"NO";
return 0;
}
/* What we know is a drop , but what we don't know is an ocean !*/
