#include <bits/stdc++.h>
#define FOR(i, a, n) for(ll i = (ll)a; i < (ll)n; i++)
#define FORR(i, n) for(ll i = (ll)n - 1LL; i >= 0LL; i--)
#define rep(i, n) FOR(i, 0, n)
#define ALL(x) begin(x), end(x)
using namespace std;
using ll = long long;
constexpr ll Mod = 998244353;
constexpr ll mod = 1e9 + 7;
constexpr ll inf = 1LL << 60;
const double PI = acos(-1);
template <typename T1, typename T2>
inline bool chmax(T1 &a, T2 b) {
    return a < b && (a = b, true);
}
template <typename T1, typename T2>
inline bool chmin(T1 &a, T2 b) {
    return a > b && (a = b, true);
}
/*-------------------------------------------*/

int main() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);

    int k, n, m;
    cin >> k >> n >> m;

    vector<ll> a(k);
    rep(i, k) {
        cin >> a[i];
        a[i] *= m;
    }

    vector<int> x(k);
    int sum = m;
    rep(i, k) {
        x[i] = a[i] / n;
        a[i] %= n;
        sum -= x[i];
    }

    vector<int> p(k);
    iota(ALL(p), 0);
    sort(ALL(p), [&](int i, int j) { return a[i] > a[j]; });

    rep(i, sum) x[p[i]]++;

    rep(i, k) cout << x[i] << " \n"[i + 1 == k];

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

#define rep(i,n) for(int (i)=0;(i)<(n);(i)++)
#define rep3(i,m,n) for(int (i)=m;(i)<=(n);(i)++)
#define rep3rev(i,m,n) for(int (i)=m;(i)>=(n);(i)--)
#define all(a) (a.begin()),(a.end())
#define rall(a) (a.rbegin()),(a.rend())
#define fi first
#define se second
#define pb push_back
#define eb emplace_back

using ll = long long;
using vll = vector<ll>;
using vi = vector<int>;
using vvi = vector<vector<int>>;
using P = pair<int, int>;
using LD = long double;

template <typename T> bool chmax(T &a, const T &b) { if (a < b) { a = b; return true; } return false; }
template <typename T> bool chmin(T &a, const T &b) { if (a > b) { a = b; return true; } return false; }
template <typename T> void coutall(T v) { if(v.empty()){cout << endl; return;} for(auto i = v.begin(); i != --v.end(); i++){cout << *i << " ";} cout << *--v.end() << endl; }
template <typename T> void DEBUGall(T v) { if(v.empty()){cerr << endl; return;} for(auto i = v.begin(); i != --v.end(); i++){cerr << *i << " ";} cerr << *--v.end() << endl; }
inline void IN(void){ return; }
template <typename First, typename... Rest> void IN(First& first, Rest&... rest){ cin >> first; IN(rest...); return; }
inline void OUT(void){ cout << "\n"; return; }
template <typename First, typename... Rest> void OUT(First first, Rest... rest){ cout << first << " "; OUT(rest...); return; }
inline void DEBUG(void){ cerr << "\n"; return; }
template <typename First, typename... Rest> void DEBUG(First first, Rest... rest){ cerr << first << " "; DEBUG(rest...); return; }

void yes(bool ok = true){ cout << (ok ? "yes" : "no") << endl; }
void Yes(bool ok = true){ cout << (ok ? "Yes" : "No") << endl; }
void YES(bool ok = true){ cout << (ok ? "YES" : "NO") << endl; }
ll myceil(ll a, ll b) { return a >= 0 ? (a+b-1)/b : -((-a)/b); }
ll myfloor(ll a, ll b) { return a >= 0 ? a/b : -myceil(-a, b); }

void Main(){
    int n; IN(n);
    vi a(n); 
    rep(i, n) {
        IN(a[i]);
        a[i] %= 200;
    }

    map<int, int> mp;
    n = min(n, 10);
    rep(bit, 1<<n){
        if(bit == 0) continue;
        int tmp = 0;
        rep(i, n){
            if(bit>>i & 1){
                tmp = (tmp + a[i]) % 200;
            }
        }
        if(mp.find(tmp) != mp.end()){
            int bit0 = mp[tmp];
            Yes();
            
            cout << __builtin_popcount(bit0) << " ";
            vi v;
            rep(i, n) {
                if(bit0>>i & 1) v.pb(i+1);
            }
            coutall(v);
            
            cout << __builtin_popcount(bit) << " ";
            v = vi();
            rep(i, n) {
                if(bit>>i & 1) v.pb(i+1);
            }
            coutall(v);
            return;
        }
        mp[tmp] = bit;
    }
    Yes(0);
    return;
}

int main(){
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
    cout << fixed << setprecision(15);
    Main();
    return 0;
}