#P9937. 游走

游走

游走

Problem Description

一条街道上有 nn 个路灯排成一排,编号 1,2,,n1, 2, \ldots, n 。一个酒鬼初始在时刻 00 时站在 11 号路灯旁。 酒鬼从某个时间 t0t_0 (t00t_0 \geq 0) 开始游走。在时间 t0t_0 之后,酒鬼每隔一个单位时间就会移动到相邻的路灯旁。如果酒鬼在时间 ttii 号路灯旁,则他在时间 t+1t + 1 必然移动到 i1i - 1 号路灯或 i+1i + 1 号路灯旁。特殊的,酒鬼不会移动到街道边界之外,即他始终只停留在路灯 11nn 之间(包含边界)。例如,酒鬼在时间 t0+1t_0 + 1 必然在 22 号路灯旁。 你得知了一些路人提供的信息,每条信息都可以用整数 pip_iqiq_i 表示,代表在 qiq_i 时刻某位路人看到酒鬼在路灯 pip_i 旁边。你想找到酒鬼开始到处走动的时间 t0t_0 。在收到信息的同时,你还想根据当前收到的信息推断 t0t_0 可能的最大值最小值。 路人提供的信息也有可能不一致。一旦你发现提供的信息有矛盾,只需停止计算并报告信息不一致。

Input

第一行一个整数 t (1t100)t\ (1\le t\le 100), 代表数据组数。 对于每组数据: 第一行包含两个整数 $n,\ m\ (2 \leq n \leq 10^9, 1 \leq m \leq 2 \times 10^5)$,代表街道上路灯的数量和操作次数。 接下来 mm 行,每行描述一个操作,为以下三种类型之一:

  • 0 pi qi0\ p_i\ q_i:路人在时间 qiq_i 看到酒鬼在路灯 pip_i 旁边 (1pin,0qi109)(1 \leq p_i \leq n, 0 \leq q_i \leq 10^9)
  • 11:根据当前收到的信息推断, t0t_0 可能的最小值。
  • 22:根据当前收到的信息推断, t0t_0 可能的最大值。 保证所有数据的 mm 之和不会超过 5×1065\times 10^6

Output

对于每个询问,输出一行代表询问的答案。 对于 22 询问(即询问 t0t_0 可能的最大值),如果 t0t_0 可以为任意大,输出 inf\textbf{inf}。 如果当前收到的信息已经不一致, 对于后续的所有询问均输出 bad\textbf{bad}

Sample Input

1
11 9
1
2
0 3 5
2
0 1 3
1
0 10 6
2
1

Sample Output

0
inf
3
1
bad
bad

Source

2024“钉耙编程”中国大学生算法设计超级联赛(3)