import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import java.util.stream.Collectors;



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<Integer> gangsters = new ArrayList<>();

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

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

        List<List<Integer>> subsets = new ArrayList<>();
        ArrayList<Integer> asd = new ArrayList<>();
        ArrayList<Integer> nums = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            subsets.clear();
            asd.clear();

            nums = new ArrayList<>(gangsters);
            nums.remove(gangsters.get(i));
            findSubsets(subsets, nums, asd, 0);
            for (int j = 1; j < n; j++) {
                BigInteger c = BigInteger.ZERO;
                for (List<Integer> s : subsets) {
                    if (s.size() == j) {
                        BigInteger sum = BigInteger.ZERO;
                        for (Integer integer : s) {
                            sum = sum.add(BigInteger.valueOf(integer));
                        }
                        if (sum.compareTo(BigInteger.valueOf(k)) > 0) {
                            continue;
                        }
                        sum = sum.add(BigInteger.valueOf(gangsters.get(i)));
                        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<Integer>> subset, ArrayList<Integer> nums, ArrayList<Integer> 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);
    }
}


