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

#define ll long long
#define all(x) x.begin(), x.end()

int main(){
	ios::sync_with_stdio(0); cin.tie(0);
	int n; cin >> n;
	vector<int> a(n);
	for(auto &v: a) cin >> v, v %= 200;
	n = min(8, n);
	vector<vector<int>> dp(200);
	for(int mask = 1; mask < (1 << n); ++mask){
		int cur_mod = 0;
		vector<int> local;
		for(int j = 0; j < n; ++j){
			if(mask & (1 << j)){
				cur_mod = (cur_mod + a[j]) % 200;
				local.push_back(j + 1);
			}
		}
		if(dp[cur_mod].empty()){
			dp[cur_mod] = local;
		}else{
			cout << "Yes" << "\n";
			cout << dp[cur_mod].size() << " ";
			for(auto i : dp[cur_mod]) cout << i << " ";
			cout << "\n";
			cout << local.size() << " ";
			for(auto i : local) cout << i << " ";
			cout << "\n";
			exit(0);
		}
	}
	cout << "No" << "\n";
}

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

int dp[210][210];

int mod(int x) {
    return (x + 200 * 10) % 200;
}

int main() {
    int n;
    cin >> n;

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

    for (int i = 0; i < n; i++) {
        for (int sum = 0; sum < 200; sum++) {
            if (sum == 0) {
                dp[i + 1][mod(sum + a[i])] += 1;
            }
            dp[i + 1][sum] += dp[i][sum];
            dp[i + 1][mod(sum + a[i])] += dp[i][sum];
        }
    }

    bool ok = false;
    int sum = 0, last = 0;
    for (int i = 0; i <= n and ok == false; i++) {
        for (int j = 0; j < 200 and ok == false; j++) {
            if (dp[i][j] >= 2) {
                ok = true;
                sum = j;
                last = i;
                break;
            }
        }
    }

    // for (int i = 0; i <= n; i++) {
    //     for (int j = 0; j < 200; j++) {
    //         cout << dp[i][j] << " ";
    //     }
    //     cout << endl;
    // }
    // cout << sum << " " << last << endl;
    if (ok == false) {
        cout << "No" << endl;
        return 0;
    }

    vector<int> b, c;

    b.push_back(last - 1);
    int cur = mod(sum - a[last - 1]);

    for (int i = last - 1; i - 1 >= 0; i--) {
        if (dp[i][cur] != dp[i - 1][cur]) {
            cur = mod(cur - a[i - 1]);
            b.push_back(i - 1);
        }
    }

    cur = sum;
    if (dp[last - 1][cur] == 0)
        c.push_back(last - 1);
    else {
        for (int i = last - 1; i - 1 >= 0; i--) {
            if (dp[i][cur] != dp[i - 1][cur]) {
                cur = mod(cur - a[i - 1]);
                c.push_back(i - 1);
            }
        }
    }

    sort(b.begin(), b.end());
    sort(c.begin(), c.end());

    cout << "Yes" << endl;
    cout << b.size() << " ";
    for (int e : b) cout << e + 1 << " ";
    cout << endl;
    cout << c.size() << " ";
    for (int e : c) cout << e + 1 << " ";
    cout << endl;
}