import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.sql.Array;
import java.util.*;
import java.util.stream.Collectors;

class MyInteger{
    public int num;

    public MyInteger(int num){
        this.num = num;
    }

    @Override
    public boolean equals(Object o) {
        return this == o;
    }

    @Override
    public int hashCode() {
        return Objects.hash(num);
    }
}

public class Problems {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String line = reader.readLine();
        StringTokenizer tokenizer = new StringTokenizer(line, " ");

        int n = Integer.parseInt(tokenizer.nextToken());
        int k = Integer.parseInt(tokenizer.nextToken());

        ArrayList<MyInteger> gangsters = new ArrayList<>();

        line = reader.readLine();
        tokenizer = new StringTokenizer(line, " ");

        for(int i=0; i<n; i++){
            gangsters.add(new MyInteger(Integer.parseInt(tokenizer.nextToken())));
        }

        List<List<MyInteger>> subsets = new ArrayList<>();
        ArrayList<MyInteger> asd = new ArrayList<>();
        findSubsets(subsets, gangsters, asd, 0);
        for (int i = 0; i < n; i++) {

            for (int j = 1; j < n; j++) {
                BigInteger c = BigInteger.ZERO;
                for (List<MyInteger> s : subsets) {
                    if (s.size() == j && !s.contains(gangsters.get(i))) {
                        BigInteger sum = BigInteger.ZERO;
                        for (MyInteger integer : s) {
                            sum = sum.add(BigInteger.valueOf(integer.num));
                        }
                        if (sum.compareTo(BigInteger.valueOf(k)) > 0) {
                            continue;
                        }
                        sum = sum.add(BigInteger.valueOf(gangsters.get(i).num));
                        if (sum.compareTo(BigInteger.valueOf(k)) > 0) {
                            c = c.add(BigInteger.ONE);
                        }
                    }
                }
                System.out.print(c.mod(BigInteger.valueOf(167772161)));
                if (j != n - 1) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }

    // https://www.geeksforgeeks.org/backtracking-to-find-all-subsets/
    public static void
    findSubsets(List<List<MyInteger>> subset, ArrayList<MyInteger> nums, ArrayList<MyInteger> output, int index)
    {
        // Base Condition
        if (index == nums.size()) {
            subset.add(output);
            return;
        }

        // Not Including Value which is at Index
        findSubsets(subset, nums, new ArrayList<>(output), index + 1);

        // Including Value which is at Index
        output.add(nums.get(index));
        findSubsets(subset, nums, new ArrayList<>(output), index + 1);
    }
}


