#include <bits/stdc++.h>

using namespace std;

#define ll int
#define ull unsigned ll
#define ld long double
typedef vector<int> vi;
typedef multiset<int> mi;
typedef multiset<ll> mll;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<string> vs;
typedef set<ll> sll;
typedef vector<vector<int>> _2vi;
typedef vector<vector<ll>> _2vll;
#define all(v) ((v).begin()), ((v).end())
#define sz(v) ((ll)((v).size()))

#define vinp(v, n)                \
    for (ull i = 0; i < (n); i++) \
    cin >> (v)[i]
#define printv(v)      \
    for (auto i : (v)) \
    cout << i << " "
#define fr0(i, n) for (ull(i) = 0; (i) < (n); (i)++)
#define fr1(i, n) for (ull(i) = 1; (i) < (n); (i)++)
#define fr(i, x, n) for (ull(i) = (x); (i) < (n); (i)++)
#define _CRT_SECURE_NO_WARNING
const ll MOD = 1000000007;

void Bustany() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
#ifndef ONLINE_JUDGE
    freopen("./in.txt", "r", stdin), freopen("./out.txt", "w", stdout);
#endif
}

const ll N = 1e5 + 5;
//vector<sll> adj(N);
//_2vll adj(N,vll(N));
//vb vis;

ll n, k;
vll v;
char dp[501][501][501];

bool rec(ll ind, ll remK, ll remX) {
    if (ind == n) {
        return remK == 0 && remX == 0;
    }
    if (remX > remK)return 0;
    auto &res = dp[ind][remK][remX];
    if (~res)return res;
    bool ch1 = 0, ch2 = 0, ch3 = 0;
    ch1 = rec(ind + 1, remK, remX);
    if (ch1)return res = 1;
    if (remK >= v[ind]) {
        ch2 = rec(ind + 1, remK - v[ind], remX);
        if (ch2)return res = 1;
        if (remX >= v[ind]) {
            ch3 = rec(ind + 1, remK - v[ind], remX - v[ind]);
            return res = ch3;
        }
    }
    return res = 0;
}


void solve() {
    cin >> n >> k;
    v.assign(n, 0);
    memset(dp, -1, sizeof dp);
    vinp(v, n);
    vll ans;
    for (ll i = 0; i <= k; i++) {
        if (rec(0, k, i))
            ans.push_back(i);
    }
    cout << ans.size() << '\n';
    for (auto i: ans) {
        cout << i << " ";
    }
}

int main() {
    Bustany();
    ll t = 1;
//     cin >> t;
    while (t--) {
        solve();
    }
}