1 #include <bits/stdc++.h>
2 #define N 2003
3 #define reg register
4 using namespace std;
5 int n, m;
6 int w[N];
7 int pos[N];
8 int f[N << 2][N];
9 void ask(const int g, const int l, const int r) {
10 if (l == r) {
11 pos[l] = g;
12 return;
13 }
14 const int mid = l + r >> 1, lc = g << 1, rc = g << 1 | 1;
15 f[lc][0] = f[rc][0] = 1;
16 for (int i = 1; i <= m; ++i) f[lc][i] = f[rc][i] = f[g][i];
17 for (reg int i = mid + 1; i <= r; ++i) {
18 for (reg int j = m; j >= w[i]; --j) {
19 f[lc][j] += f[lc][j - w[i]];
20 f[lc][j] = f[lc][j] >= 10 ? f[lc][j] - 10 : f[lc][j];
21 }
22 }
23 for (reg int i = l; i <= mid; ++i) {
24 for (reg int j = m; j >= w[i]; --j) {
25 f[rc][j] += f[rc][j - w[i]];
26 f[rc][j] = f[rc][j] >= 10 ? f[rc][j] - 10 : f[rc][j];
27 }
28 }
29 ask(lc, l, mid);
30 ask(rc, mid + 1, r);
31 }
32 int main() {
33 scanf("%d%d", &n, &m);
34 for (reg int i = 1; i <= n; ++i) scanf("%d", &w[i]);
35 ask(1, 1, n);
36 for (reg int i = 1; i <= n; ++i) {
37 for (reg int j = 1; j <= m; ++j) putchar(f[pos[i]][j] + 48);
38 puts("");
39 }
40 }