#include <bits/stdc++.h>
using namespace std;
//
const int mx = 1e6 + 5;
//
int n, T;
unordered_map<int, int> mp;
bitset<mx> dp(1);
//
void process (void)
{
cin >> n >> T;
for (int w; n--;)
cin >> w,
++mp[w];
for (auto [w, cnt] : mp)
{
int p;
//
for (p = 0; (1 << p + 1) - 1 <= cnt; ++p)
if ((1LL << p) * w <= T)
dp |= dp << (1 << p) * w;
if (cnt > (1LL << p) - 1 && (cnt - (1 << p) + 1) * w <= T)
dp |= dp << (cnt - (1 << p) + 1) * w;
}
for (int i = 1; i <= T; ++i)
cout << dp[i];
}
//
signed main (void)
{
ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
process();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci8vCmNvbnN0IGludCBteCA9IDFlNiArIDU7Ci8vCmludCBuLCBUOwp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBtcDsKYml0c2V0PG14PiBkcCgxKTsKLy8Kdm9pZCBwcm9jZXNzICh2b2lkKQp7CiAgICBjaW4gPj4gbiA+PiBUOwogICAgZm9yIChpbnQgdzsgbi0tOykKICAgICAgICBjaW4gPj4gdywKICAgICAgICArK21wW3ddOwoKICAgIGZvciAoYXV0byBbdywgY250XSA6IG1wKQogICAgewogICAgICAgIGludCBwOwogICAgICAgIC8vCiAgICAgICAgZm9yIChwID0gMDsgKDEgPDwgcCArIDEpIC0gMSA8PSBjbnQ7ICsrcCkKICAgICAgICAgICAgaWYgKCgxTEwgPDwgcCkgKiB3IDw9IFQpCiAgICAgICAgICAgICAgICBkcCB8PSBkcCA8PCAoMSA8PCBwKSAqIHc7CiAgICAgICAgaWYgKGNudCA+ICgxTEwgPDwgcCkgLSAxICYmIChjbnQgLSAoMSA8PCBwKSArIDEpICogdyA8PSBUKQogICAgICAgICAgICBkcCB8PSBkcCA8PCAoY250IC0gKDEgPDwgcCkgKyAxKSAqIHc7CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gVDsgKytpKQogICAgICAgIGNvdXQgPDwgZHBbaV07Cn0KLy8Kc2lnbmVkIG1haW4gKHZvaWQpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKICAgIHByb2Nlc3MoKTsKfQ==