#CF2070F. 朋友与披萨
朋友与披萨
F. 朋友与披萨
每个测试点的时间限制: 秒
每个测试点的内存限制: 兆字节
Monocarp 有 个披萨,第 个披萨有 片。披萨用大写英文字母 到第 个字母表示。
Monocarp 还有 个朋友,他想邀请恰好其中两位来吃披萨。对于每位朋友,Monocarp 知道他喜欢哪些披萨。
朋友们到达 Monocarp 家后,对于每个披萨,会发生以下情况:
- 如果两个被邀请的朋友都不喜欢这个披萨,Monocarp 会吃掉它;
- 如果恰好其中一个朋友喜欢这个披萨,那么那位朋友会吃掉它;
- 如果两个朋友都喜欢这个披萨,他们会尝试平分它。如果披萨的片数是偶数,他们每人恰好吃一半;但如果披萨的片数是奇数,他们会开始争吵,试图决定谁多吃一片——而 Monocarp 不喜欢这样。
对于每个 从 到 ,请计算恰好选择两位朋友邀请的方案数,使得朋友不争吵,并且 Monocarp 恰好吃掉 片。
输入
第一行包含两个整数 和 (;)——披萨的数量和朋友的数量。
第二行包含 个字符串 (),其中 是由从 到第 个字母的不同字符组成的字符串,表示第 个朋友喜欢哪些披萨。每个字符串 中的字符按字典序(字母顺序)排序。
第三行包含 个整数 ()——每个披萨的片数。
输出
输出 个整数,其中第 个整数(从 开始计数)应该是恰好选择两位朋友邀请且朋友不争吵、Monocarp 恰好吃掉 片的方案数。
示例
输入
3 6
A AB ABC AB BC C
2 3 5
输出
4 0 0 1 0 2 0 0 0 0 0
注意
考虑第一个示例中所有朋友对:
- 邀请朋友 和 :他们会吃掉披萨 和 ,Monocarp 吃掉披萨 ;
- 邀请朋友 和 :他们会吃掉所有披萨;
- 邀请朋友 和 :他们会吃掉披萨 和 ,Monocarp 吃掉披萨 ;
- 邀请朋友 和 :他们会吃掉所有披萨;
- 邀请朋友 和 :他们会吃掉披萨 和 ,Monocarp 吃掉披萨 ;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :他们会吃掉所有披萨;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :会因披萨 争吵;
- 邀请朋友 和 :他们会吃掉所有披萨;
- 邀请朋友 和 :会因披萨 争吵。