又一道好题
时间限制: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\},初始时 a 序列的每个元素的值都为 0。现对序列 a 执行操作共 q 次,操作的输入和执行内容分为以下两种:

  • 1 x : 将 a 序列中下标x 的元素 +1
  • 2 x : 将 a 序列中数值x 的元素都 +1

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

输入描述:

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

对于每个样例:

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

接下来 q 行, 每行两个整数 op, x (1\le op \le 2) 表示一个操作,其中 op 表示操作类型。

op = 1 时,有 1\le x \le n

op = 2 时,保证 a 序列中存在数值为 x 的元素。

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

输出描述:

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

输入

复制
4
3 3
2 0
1 2
2 2
2 2
1 1
1 1
1 1
2 0
4 3
2 0
2 1
1 4

输出

复制
1 3 1
2 0
1
2 2 2 3

说明

对于第一个样例:

第一次操作后序列 a = \{1,1,1 \}

第二次操作后序列 a = \{1,2,1 \}

第三次操作后序列 a = \{1,3,1 \}