再一道好题
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

 开放,合作,共赢。

未来十到二十年,我们将加速走向全联接的智能社会,通信和计算是未来世界的两个最重要的基石。华为将持续与政、产、学、研、用等各领域的产业组织和生态伙伴开放合作,持续向产业界贡献标准提案、产业理解、技术难题等,推动产业发展和技术进步;同时,运用系统工程的方法,“软硬芯网云边端”结合,立体创新,持续提升产品和解决方案的竞争力。华为将一如既往,与产业各界共同构建和谐有益的产业生态,共同营造开放合作共赢的产业环境。

于众多技术难题中,Capps 抽象出了再一道好题考考你:

你有一个长度为 n 的整数序列 a=\{a_1, a_2, ..., a_n\},初始时,对于 \forall i (1\le i \le n)a_i = i。现对序列 a 执行操作共 q 次,操作的输入和执行内容分为以下两种:

  • 1 \ x : 将 a 序列中数值小于 a_x 的元素都 +1,然后 a_x \leftarrow 1
  • 2 : 设 a 序列中数值最大的元素下标为 x,将 a 序列中数值小于 a_x 的元素都 +1,然后 a_x \leftarrow 1

最后请输出在顺序执行 q 次操作之后的 a 序列。

注意:其中符号 \leftarrow 为赋值符号,如在 a_1 \leftarrow 2 之后, a_1 的值便为 2

输入描述:

本题有多个样例,第一行一个样例数 T (1\le T \le 3\times 10^5)

对于每个样例:

第一行两个整数 n,q (1\le n,q \le 3\times 10^5),表示序列长度和操作次数。

接下来 q 行, 每行开头一个整数 op (1\le op \le 2) 表示一次操作。

op = 1 时,再输入一个整数 x (1\le x \le n)

op = 2 时,保证 a 序列中数值最大的元素唯一。

对于所有样例,保证 \sum n \le 3 \times 10^5 以及 \sum q \le 3 \times 10^5

输出描述:

对于每个样例输出一行 n 个整数表示经过 q 次操作后的 a 序列, 其中相邻整数以一个空格隔开,每行最后一个整数后面不要有额外空格,共输出 T 行。
示例1

输入

复制
2
4 5
1 3
2
1 1
2
2
2 1
2

输出

复制
3 2 1 4
2 1

说明

对于第一个样例:

1 次操作后 a 序列为:\{ 2,3,1,4 \}

2 次操作后 a 序列为:\{ 3,4,2,1 \}

3 次操作后 a 序列为:\{ 1,4,3,2 \}

4 次操作后 a 序列为:\{ 2,1,4,3 \}

5 次操作后 a 序列为:\{ 3,2,1,4 \}