#include <bits/stdc++.h>
using namespace std;
const int mx = 505;
int dp[2][mx][mx];
int main() {
  int n, k1, u, i, j, k;
  cin >> n >> k1;
  dp[0][0][0] = 1;
  for (i = 1; i <= n; i++) {
    int now = i % 2;
    int last = 1 - now;
    cin >> u;
    for (j = 0; j <= k1; j++) {
      for (k = 0; k <= j; k++) {
        dp[now][j][k] |= dp[last][j][k];
        if (j >= u) {
          dp[now][j][k] |= dp[last][j - u][k];
          if (k >= u) {
            dp[now][j][k] |= dp[last][j - u][k - u];
          }
        }
      }
    }
  }
  vector<int> ans;
  for (i = 0; i <= k1; i++) {
    if (dp[n % 2][k1][i]) {
      ans.push_back(i);
    }
  }
  cout << ans.size() << endl;
  for (i = 0; i < ans.size(); i++) {
    cout << ans[i] << " ";
  }
}
