#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int f=0,x=0;
	char ch=getchar();
	while(!isdigit(ch)){f|=(ch=='-');ch=getchar();}
	while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
	return f?-x:x;
}
int a[1000];
int sta[1000],top;
int pre[1000][1000];
int dp[1000][1000];
int cnt[1000][1000];
int ans;
signed main(){
	int n=read();
	for(int i=1;i<=n;i++){
		a[i]=read();a[i]%=200;
	}
	dp[0][0]=1;
	for(int i=1;i<=n;i++){
		for(int j=0;j<200;j++)dp[i][j]=dp[i-1][j],pre[i][j]=0,cnt[i][j]=cnt[i-1][j];
		for(int j=199;j>=0;j--){
			if(dp[i-1][j]&&dp[i-1][(j-a[i]+200)%200]&&cnt[i-1][j]&&(cnt[i-1][(j-a[i]+200)%200]+1)){
				puts("Yes");cout<<cnt[i-1][j]<<" ";
				int now=i-1,sum=j;top=0;
				while(now){
					if(pre[now][sum])sta[++top]=pre[now][sum];
					sum-=a[pre[now][sum]];
					sum+=200;sum%=200;
					now--;
				}
				sort(sta+1,sta+1+top);
				for(int l=1;l<=top;l++)cout<<sta[l]<<" ";puts("");top=0;
				cout<<cnt[i-1][(j-a[i]+200)%200]+1<<" ";
				
				sum=(j-a[i]+200)%200,now=i-1;
				while(now){
					if(pre[now][sum])sta[++top]=pre[now][sum];
					sum-=a[pre[now][sum]];
					sum+=200;sum%=200;
					now--;
				}
				sort(sta+1,sta+1+top);
				for(int l=1;l<=top;l++)cout<<sta[l]<<" ";top=0;cout<<i<<" ";puts("");
				return 0;
			}else{
				if(dp[i-1][(j-a[i]+200)%200]){
					dp[i][j]|=dp[i-1][(j-a[i]+200)%200];
					cnt[i][j]=cnt[i-1][(j-a[i]+200)%200]+1;
					pre[i][j]=i;
				}
				
			}
		}
	}puts("No");
	return 0;
}
#include<bits/stdc++.h>
 
using namespace std;
 
void output(vector<int> &a){
  cout << a.size();
  for(auto &nx : a){
    cout << ' ' << nx;
  }
  cout << '\n';
}
 
int main(){
  int n;
  cin >> n;
  vector<int> a(n);
  for(auto &nx : a){cin >> nx;}
  vector<vector<int>> bk(200,vector<int>(0));
  int cnt=min(n,8);
  for(int i=1;i<(1<<cnt);i++){
    int sig=0;
    vector<int> s;
    for(int j=0;j<cnt;j++){
      if(i&(1<<j)){
        s.push_back(j+1);
        sig+=a[j];sig%=200;
      }
    }
    if(bk[sig].size()!=0){
      cout << "Yes\n";
      output(bk[sig]);
      output(s);
      return 0;
    }
    else{bk[sig]=s;}
  }
  cout << "No\n";
  return 0;
}