#include <bits/stdc++.h> 
using namespace std;
#define all(ac) ac.begin(), ac.end()
#define fi first
#define se second
#define pii pair <int, int>
#define task "exchange"
#define db double
#define pb push_back
#define eb emplace_back
#define bit(x, y) ((x >> y) & 1)
 
void pre_calc(vector <pii> &vt, int v, int cnt, int w = 1) {
    while(w <= cnt) {
        cnt -= w;
        vt.pb(make_pair(v, w));
        w <<= 1;
    }
    if(cnt > 0) vt.pb(make_pair(v, cnt));
    return;
}
 
int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    if(fopen(task".inp", "r")) {
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }
    int n, P; cin >> n >> P;
    int lim = P << 1 | 1;
    vector <int> rv, cnt(lim + 1, 0);
    for(int i=1;i<=n;i++) {
        int x; cin >> x;
        cnt[x]++;
        if(cnt[x] == 1) rv.eb(x);
    }
    sort(all(rv));
    int diff = rv.size();
    vector <pii> vt;
    for(int i : rv) {
        pre_calc(vt, i, cnt[i] - 1);
    }
    int f[lim + 1];
    memset(f, 0, sizeof f);
    f[0] = 1;
    pii pre[lim + 1];
    for(pii val : vt) {
        for(int i=lim;i>=val.se * val.fi;i--) {
            if(f[i] == 0 && f[i - val.se * val.fi] == 1) f[i] = 1, pre[i] = val;
        }
    }
 
    int dp[diff + 1][lim + 1];
    int p[diff + 1][lim + 1];
    for(int i=1;i<=lim;i++) dp[0][i] = n + 5;
    dp[0][0] = 0;
    for(int i=1;i<=diff;i++) {
        for(int j=lim;j>=0;j--) {
            dp[i][j] = dp[i - 1][j];
            p[i][j] = 0;
        }
        for(int j=lim;j>=rv[i - 1];j--) {
            if(dp[i][j] > dp[i][j - rv[i - 1]] + 1) {
                dp[i][j] = dp[i][j - rv[i - 1]] + 1;
                p[i][j] = 1;
            }
        }
    }
 
    int rem = n + 3, w = lim + 6;
    int id = -1;
    int pos_j = lim;
    int p1, p2;
    for(int pos_i = 0;pos_i<=lim;pos_i++) {
        while(pos_i + pos_j >= P) {
            if(f[pos_j] == 1) id = pos_j;
            pos_j--;
        }
        if(dp[diff][pos_i] < 1e6 && id != -1) {
            if(rem > dp[diff][pos_i]) {
              rem = dp[diff][pos_i];
              w = pos_i + id;
              p1 = pos_i, p2 = id;
            }
            else
            if(rem == dp[diff][pos_i]) {
                if(w > pos_i + id) {
                    w = pos_i + id;
                    p1 = pos_i, p2 = id;
                }
            }
        }
    }
    cout << diff - rem << ' ' << w << '\n';
    vector <int> ans;
    while(p2 > 0) {
        int cnt = pre[p2].se;
        while(cnt--) ans.eb(pre[p2].fi);
        p2 -= pre[p2].fi * pre[p2].se;
    }
    for(int i=diff;i>=1;i--) {
        if(p[i][p1] == 1) ans.eb(rv[i - 1]), p1 -= rv[i - 1];
        if(p1 == 0) break;
    }
    sort(all(ans));
    for(int x : ans) cout << x << ' ';
    return 0;
}
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGFsbChhYykgYWMuYmVnaW4oKSwgYWMuZW5kKCkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHBpaSBwYWlyIDxpbnQsIGludD4KI2RlZmluZSB0YXNrICJleGNoYW5nZSIKI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBiaXQoeCwgeSkgKCh4ID4+IHkpICYgMSkKCnZvaWQgcHJlX2NhbGModmVjdG9yIDxwaWk+ICZ2dCwgaW50IHYsIGludCBjbnQsIGludCB3ID0gMSkgewogICAgd2hpbGUodyA8PSBjbnQpIHsKICAgICAgICBjbnQgLT0gdzsKICAgICAgICB2dC5wYihtYWtlX3BhaXIodiwgdykpOwogICAgICAgIHcgPDw9IDE7CiAgICB9CiAgICBpZihjbnQgPiAwKSB2dC5wYihtYWtlX3BhaXIodiwgY250KSk7CiAgICByZXR1cm47Cn0KCmludDMyX3QgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCksIGNvdXQudGllKDApOwogICAgaWYoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBpbnQgbiwgUDsgY2luID4+IG4gPj4gUDsKICAgIGludCBsaW0gPSBQIDw8IDEgfCAxOwogICAgdmVjdG9yIDxpbnQ+IHJ2LCBjbnQobGltICsgMSwgMCk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgIGludCB4OyBjaW4gPj4geDsKICAgICAgICBjbnRbeF0rKzsKICAgICAgICBpZihjbnRbeF0gPT0gMSkgcnYuZWIoeCk7CiAgICB9CiAgICBzb3J0KGFsbChydikpOwogICAgaW50IGRpZmYgPSBydi5zaXplKCk7CiAgICB2ZWN0b3IgPHBpaT4gdnQ7CiAgICBmb3IoaW50IGkgOiBydikgewogICAgICAgIHByZV9jYWxjKHZ0LCBpLCBjbnRbaV0gLSAxKTsKICAgIH0KICAgIGludCBmW2xpbSArIDFdOwogICAgbWVtc2V0KGYsIDAsIHNpemVvZiBmKTsKICAgIGZbMF0gPSAxOwogICAgcGlpIHByZVtsaW0gKyAxXTsKICAgIGZvcihwaWkgdmFsIDogdnQpIHsKICAgICAgICBmb3IoaW50IGk9bGltO2k+PXZhbC5zZSAqIHZhbC5maTtpLS0pIHsKICAgICAgICAgICAgaWYoZltpXSA9PSAwICYmIGZbaSAtIHZhbC5zZSAqIHZhbC5maV0gPT0gMSkgZltpXSA9IDEsIHByZVtpXSA9IHZhbDsKICAgICAgICB9CiAgICB9CgogICAgaW50IGRwW2RpZmYgKyAxXVtsaW0gKyAxXTsKICAgIGludCBwW2RpZmYgKyAxXVtsaW0gKyAxXTsKICAgIGZvcihpbnQgaT0xO2k8PWxpbTtpKyspIGRwWzBdW2ldID0gbiArIDU7CiAgICBkcFswXVswXSA9IDA7CiAgICBmb3IoaW50IGk9MTtpPD1kaWZmO2krKykgewogICAgICAgIGZvcihpbnQgaj1saW07aj49MDtqLS0pIHsKICAgICAgICAgICAgZHBbaV1bal0gPSBkcFtpIC0gMV1bal07CiAgICAgICAgICAgIHBbaV1bal0gPSAwOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGo9bGltO2o+PXJ2W2kgLSAxXTtqLS0pIHsKICAgICAgICAgICAgaWYoZHBbaV1bal0gPiBkcFtpXVtqIC0gcnZbaSAtIDFdXSArIDEpIHsKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gZHBbaV1baiAtIHJ2W2kgLSAxXV0gKyAxOwogICAgICAgICAgICAgICAgcFtpXVtqXSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGludCByZW0gPSBuICsgMywgdyA9IGxpbSArIDY7CiAgICBpbnQgaWQgPSAtMTsKICAgIGludCBwb3NfaiA9IGxpbTsKICAgIGludCBwMSwgcDI7CiAgICBmb3IoaW50IHBvc19pID0gMDtwb3NfaTw9bGltO3Bvc19pKyspIHsKICAgICAgICB3aGlsZShwb3NfaSArIHBvc19qID49IFApIHsKICAgICAgICAgICAgaWYoZltwb3Nfal0gPT0gMSkgaWQgPSBwb3NfajsKICAgICAgICAgICAgcG9zX2otLTsKICAgICAgICB9CiAgICAgICAgaWYoZHBbZGlmZl1bcG9zX2ldIDwgMWU2ICYmIGlkICE9IC0xKSB7CiAgICAgICAgICAgIGlmKHJlbSA+IGRwW2RpZmZdW3Bvc19pXSkgewogICAgICAgICAgICAgIHJlbSA9IGRwW2RpZmZdW3Bvc19pXTsKICAgICAgICAgICAgICB3ID0gcG9zX2kgKyBpZDsKICAgICAgICAgICAgICBwMSA9IHBvc19pLCBwMiA9IGlkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgaWYocmVtID09IGRwW2RpZmZdW3Bvc19pXSkgewogICAgICAgICAgICAgICAgaWYodyA+IHBvc19pICsgaWQpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gcG9zX2kgKyBpZDsKICAgICAgICAgICAgICAgICAgICBwMSA9IHBvc19pLCBwMiA9IGlkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBkaWZmIC0gcmVtIDw8ICcgJyA8PCB3IDw8ICdcbic7CiAgICB2ZWN0b3IgPGludD4gYW5zOwogICAgd2hpbGUocDIgPiAwKSB7CiAgICAgICAgaW50IGNudCA9IHByZVtwMl0uc2U7CiAgICAgICAgd2hpbGUoY250LS0pIGFucy5lYihwcmVbcDJdLmZpKTsKICAgICAgICBwMiAtPSBwcmVbcDJdLmZpICogcHJlW3AyXS5zZTsKICAgIH0KICAgIGZvcihpbnQgaT1kaWZmO2k+PTE7aS0tKSB7CiAgICAgICAgaWYocFtpXVtwMV0gPT0gMSkgYW5zLmViKHJ2W2kgLSAxXSksIHAxIC09IHJ2W2kgLSAxXTsKICAgICAgICBpZihwMSA9PSAwKSBicmVhazsKICAgIH0KICAgIHNvcnQoYWxsKGFucykpOwogICAgZm9yKGludCB4IDogYW5zKSBjb3V0IDw8IHggPDwgJyAnOwogICAgcmV0dXJuIDA7Cn0=