#P9601. 数据结构

数据结构

题目描述

维护一个正整数多重集合 SS,初始为空,支持两个操作:

  • 插入:插入一个新数 xx
  • 修改:令集合中所有数加 11

每次操作结束后,计算 SS 中所有数的 kk 次方和,kk 预先给定。

和可能很大,你只需要输出它对 109+710^9+7 的余数即可。

输入格式

第一行两个数 M,kM,k,其中 MM 表示操作次数。

接下来 MM 行,每行可能为以下两种之一:

  • 0 x,表示插入一个大小为 xx 的新元素。

  • 1 ,表示令集合 SS 里所有数加一。

输出格式

输出 MM 行,第 ii 行表示第 ii 次操作结束之后,SS 中所有数的 kk 次方和。

样例

3 2
0 1
0 1
1
1
2
8

第一次操作后,集合为 {1}\{1\}

第二次操作后,集合为 {1,1}\{1,1\}

第三次操作后,集合为 {2,2}\{2,2\}

数据范围

对全部的测试数据,1M2×1051\le M \leq 2 \times 10^{5}1k501\le k \leq 501x1051\le x\leq 10^5

  • 1010 分的数据,k=1k=1
  • 对于另外 2020 分的数据,M3000M \leq 3000
  • 对于另外 2020 分的数据,k=2k=2
  • 对于另外 2020 分的数据,k=3k=3
  • 对于另外 3030 分的数据,无特殊限制。