#include <bits/stdc++.h>

#define rep(i, end) for (auto i = 0; i < end; ++i)
#define ALL(a) a.begin(), a.end()

using namespace std;

using ll = long long int;

const int MOD_NUM = 1e9 + 7;

vector<int> bits_to_indexes(const bitset<8>& bits) {
    vector<int> indexes;
    rep(i, 8) if (bits[i]) indexes.emplace_back(i);

    return indexes;
}

int sum_by_indexes(const vector<int>& indexes, const vector<int>& A) {
    int sum_a = 0;
    for (int i : indexes) sum_a += A[i];

    return sum_a;
}

void output_indexes(const vector<int>& indexes) {
    cout << indexes.size();
    for (int i : indexes) cout << ' ' << i + 1;
    cout << endl;
}

int main() {
    // Input
    int N;
    cin >> N;
    vector<int> A(N);
    rep(i, N) cin >> A[i];

    // Process
    rep(i, N) A[i] %= 200;

    vector<int> bits_memory(200, 0);
    bool judge = false;
    int b, c;
    rep(i, pow(2, N)) {
        bitset<8> bits(i);

        int sum_a = sum_by_indexes(bits_to_indexes(bits), A) % 200;

        if (bits_memory[sum_a] == 0) {
            bits_memory[sum_a] = i;
        } else {
            b = bits_memory[sum_a];
            c = i;
            judge = true;
            break;
        }
    }

    // Output
    if (judge) {
        cout << "Yes" << endl;

        vector<int> B = bits_to_indexes((bitset<8>)b);
        output_indexes(B);

        vector<int> C = bits_to_indexes((bitset<8>)c);
        output_indexes(C);
    } else {
        cout << "No" << endl;
    }

    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int n,a[205];
int f[205][205],pre[205][205];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],a[i]%=200;
	for(int i=1;i<=n;i++){
		f[i][a[i]]=1;
		for(int j=0;j<=200;j++){
			for(int k=1;k<i;k++){
				if(f[k][(j-a[i]+200)%200]){
					pre[i][j]=k;
					f[i][j]=1;
				}
			}
		}
	}
	for(int i=0;i<200;i++){
		int cnt=0,a1=0,a2=0;
		for(int j=1;j<=n;j++){
			if(f[j][i]){
				if(!a1) a1=j;
				else if(!a2) a2=j;
				cnt++;
			}
		}
		if(cnt>=2){
			puts("Yes");
			vector<int> v1,v2;
			int mod=i;
			while(a1){
				//cout<<a1<<endl;
				v1.push_back(a1);
				int t=a1;
				a1=pre[a1][mod];
				mod=(mod-a[t]+200)%200;
			}
			mod=i;
			while(a2){
				v2.push_back(a2);
				int t=a2;
				a2=pre[a2][mod];
				mod=(mod-a[t]+200)%200;
			}
			reverse(v1.begin(),v1.end());
			reverse(v2.begin(),v2.end());
			cout<<v1.size()<<' ';
			for(int k=0;k<v1.size();k++) cout<<v1[k]<<' ';
			cout<<endl;
			cout<<v2.size()<<' ';
			for(int k=0;k<v2.size();k++) cout<<v2[k]<<' ';
			return 0;
		}
	} 
	puts("No");
} 