#include <bits/stdc++.h>
using namespace std;
bitset<501> dp[501];
int c[500];
int main() {
  int n, k;
  dp[0][0] = 1;
  cin >> n >> k;
  int s = 0;
  for (int i = 0; i < n; i++) {
    cin >> c[i];
  }
  sort(c, c + n);
  for (int i = 1; i <= n; i++) {
    for (int j = k; j >= 0; j--) {
      for (int l = k; l >= 0; l--) {
        if (dp[j][l]) dp[j].set(l);
        if (j >= c[i - 1]) {
          if (dp[j - c[i - 1]][l]) dp[j].set(l);
          if (l >= c[i - 1])
            if (dp[j - c[i - 1]][l - c[i - 1]]) dp[j].set(l);
        }
        if (i == n && j == k) s += dp[j][l];
      }
    }
  }
  cout << s << endl;
  for (int i = 0; i <= k; i++) {
    if (dp[k][i]) cout << i << " ";
  }
}
