U682392 异或和计数

题目描述

给你一个整数 $n$ 和一个长度为 $m$ 的数列 $a_1, a_2, \ldots, a_m$。 对于 $[0, 2^n-1]$ 范围内的每一个整数 $x$,你需要求出 $f(x)$。 这里 $f(x)$ 的定义为: $\dagger$ 所有满足 $1 \le i \lt j \le m$ 且 $a_i \oplus a_j = x$ 的下标对 $(i, j)$ 的数量。 这里,$\oplus$ 是异或运算符。

输入格式

第一行,两个整数 $n$ 和 $m$,以空格分隔。 第二行,$m$ 个整数 $a_1, a_2, \ldots, a_m$,以空格分隔。

输出格式

输出共一行,包含 $2^n$ 个整数,以空格分隔,依次表示 $f(0), f(1), \ldots, f(2^n-1)$ 的值。

说明/提示

#### 数据规模与约定 - 对于 $30\%$ 的数据,$n \le 5, m \le 100$ - 对于 $60\%$ 的数据,$n \le 10, m \le 10^5$ - 对于 $100\%$ 的数据,$1 \le n \le 18, 2 \le m \le 2 \cdot 10^5$,$0 \le a_i \lt 2^n$