n, k = [int(x) for x in input().split()]

weights = [int(x) for x in input().split()]

k_min = 0

poss = {}

def rec_fun(red, j, index, interval, i):
    if index == j:
        tmp = 0
        for ai in range(j):
            tmp += interval[ai]
        if k_min < tmp <= k:
            return 1
        return 0
    if i >= n - 1:
        return 0
    interval[index] = reduced[i]
    s = 0
    s += rec_fun(red, j, index + 1, interval, i + 1)
    s += rec_fun(red, j, index, interval, i + 1)
    return s


def fun(red, j):
    interval = list(range(j))
    return rec_fun(red, j, 0, interval, 0)


for i in range(n):
    reduced = weights[:i] + weights[i+1:]
    w = weights[i]
    if poss.get(w) is not None:
        print(poss[w])
        continue
    k_min = k - w
    lst_tmp = []
    for j in range(1, n):
        val = fun(reduced, j)
        print(val, end=" " if j != n - 1 else "")
        lst_tmp.append(str(val))
    print()
    poss[w] = ' '.join(lst_tmp)











