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

int main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int n;
    cin >> n;
    vector<int> a(n);
    for (int &it : a) {
        cin >> it;
        it %= 200;
    }
    vector<int> p(200, -1);
    if (n > 8) n = 8;
    for (int m = 1; m < (1 << n); m++) {
        int sum = 0;
        for (int i = 0; i < n; i++) {
            if ((m >> i) % 2 == 1) {
                sum += a[i];
            }
        }
        sum %= 200;
        if (p[sum] != -1) {
            cout << "Yes\n";
            vector<int> b, c;
            for (int i = 0; i < n; i++) {
                if ((p[sum] >> i) % 2 == 1) {
                    b.push_back(i);
                }
                if ((m >> i) % 2 == 1) {
                    c.push_back(i);
                }
            }

            cout << b.size();
            for (int x : b) cout << ' ' << x + 1;
            cout << '\n';
            cout << c.size();
            for (int x : c) cout << ' ' << x + 1;
            cout << '\n';
            return 0;
        } else {
            p[sum] = m;
        }
    }
    cout << "No\n";
}

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
#define rep(i,n) for(int i=0, i##_len=(int)(n); i<i##_len; i++)
#define reps(i,n) for(int i=1 , i##_len=(int)(n);i<=i##_len;i++)
#define rrep(i,n) for(int i=((int)(n)-1);i>=0;i--)
#define rreps(i,n) for(int i=((int)(n));i>0;i--)
#define repi(i,x) for(auto i=(x).begin(),i##_fin=(x).end();i!=i##_fin;i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
typedef vector<int> Vi;
typedef vector<Vi> VVi;
typedef pair<int , int> Pi;
typedef vector<Pi> VPi;
typedef vector<long long> V;
typedef vector<V> VV;
typedef pair<long long , long long> P;
typedef vector<P> VP;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1;} return 0;}
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1;} return 0;}
template <class T, class U>ostream& operator<<(ostream& os, const pair<T, U>& p) {
	os << "(" << p.first << " " << p.second << ")";
	return os;
}
template <class T>ostream& operator<<(ostream& os, const vector<T>& v) {
	rep(i, v.size()) {
		if (i) os << " ";
		os << v[i];
	}
	return os;
}
template <class T, class U>istream& operator>>(istream& is, pair<T, U>& p) {
	is >> p.first >>p.second ;
	return is;
}
template <class T>istream& operator>>(istream& is,  vector<T>& v) {
	rep(i, v.size()) {
		is >> v[i];
	}
	return is;
}
const long long INFLL = 1LL<<60;
const int INF = 1<<30;
const double PI=acos(-1);
#ifdef LOCAL
#define dbg(x) cerr << #x << ": " << (x) << '\n'
#define say(x) cerr<<(x) <<'\n'
#else
#define dbg(x)
#define say(x)
#endif
string solve(bool a) { return ((a) ? "Yes" : "No"); }
int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	int m,h;
	int ans=0;
	cin >>m>>h;
	cout<<solve(h%m==0)<<endl;
}