#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cmath>
#include <stdio.h>
#include <queue>
#include <deque>
#include <cstdio>
#include <set>
#include <map>
#include <bitset>
#include <stack>
#include <cctype>
using namespace std;
int main() {
	int n;
	long a[22];
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	long ans = 100000000007;
	for (int i = 0; i < (1 << (n - 1)); i++) {
		vector<long> vec;
		long o = 0;
		for (int j = 0; j < n; j++) {
			o |= a[j];
			if (i & (1 << j)) {
				vec.emplace_back(o);
				o = 0;
			}
		}
		vec.emplace_back(o);
		long co = 0;
		for (int j = 0; j < vec.size(); j++) {
			co ^= vec[j];
		}
		if (ans > co) {
			ans = co;
		}
	}
	cout << ans << endl;
}
#include <bits/stdc++.h>
using namespace std;
int n,a[210],dp[210][210],pi[210][210];
void output(int n,int m,int len)
{
    if(n==0)
    {
        cout<<len<<" ";
        return;
    }
    output(pi[n][m],((m-a[n])%200+200)%200,len+1);
    cout<<n<<" ";
}
bool check(int i)
{
    for(int j=1;j<n;j++)
		for(int k=j+1;k<=n;k++)
			if(dp[j][i]&&dp[k][i])
			{
				cout<<"Yes"<<endl;
				output(j,i,0);
				cout<<endl;
				output(k,i,0);
				return 1;
			}
	return 0;
}
bool flag;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i]%=200;
	}
	dp[0][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=0;j<200;j++)
		    for(int k=0;k<i;k++)
			    if(dp[k][((j-a[i])%200+200)%200])
			    	{
			    	    dp[i][j]=1;
			    	    pi[i][j]=k;
			    	    break;
			    	}
	for(int i=0;i<200;i++)
		if(check(i))
		{
		    flag=1;
		    break;
		}
	if(!flag)
	{
	    for(int i=1;i<n;i++)
        if(dp[i][0])
        {
            cout<<"Yes"<<endl;
			output(i,0,1);
			cout<<i+1<<endl;
			cout<<1<<" "<<i+1;
			flag=1;
        }
	}
	if(!flag)cout<<"No";
    return 0;
}