#include <bits/stdc++.h>
using namespace std;
bitset<501> bt[1010];
int c[505];
int ans[250001], tot;
int main() {
  tot = 0;
  int n, k;
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &c[i]);
  bt[0].set(0);
  int maxn = 0;
  for (int i = 1; i <= n; i++) {
    int lim = maxn;
    for (int j = lim; j >= 0; j--) {
      if (j + c[i] > k) continue;
      bt[j + c[i]] |= bt[j];
      bt[j + c[i]] |= bt[j] << c[i];
    }
    maxn = maxn + c[i];
  }
  for (int i = 0; i <= 500; i++) {
    if (bt[k].test(i)) {
      ans[tot++] = i;
    }
  }
  printf("%d\n", tot);
  for (int i = 0; i < tot; i++) {
    printf("%d", ans[i]);
    if (i == tot - 1)
      printf("\n");
    else
      printf(" ");
  }
}
