蜗牛们正在爬树。树的高度为 \( h \) 米,蜗牛从位置 \( 0 \) 开始爬。
每只蜗牛有两个属性 \( a \) 和 \( b \)(\( a > b \))。从第 \( 1 \) 天开始,蜗牛每天白天会向上爬 \( a \) 米;晚上蜗牛休息,会滑下 \( b \) 米。如果在第 \( n \) 天,蜗牛第一次到达位置 \( h \)(即树顶),它将完成爬树,我们说这只蜗牛花费了 \( n \) 天爬树。注意,在最后一天,蜗牛不一定需要爬 \( a \) 米,因为如果它离树顶的距离小于 \( a \),它只需要爬到树顶即可。
不幸的是,你一开始并不知道树的确切高度 \( h \),但你知道 \( h \) 是一个正整数。接下来会有 \( q \) 个事件,分为两种类型:
类型 \( 1 \) 的事件:一只属性为 \( a \)、\( b \) 的蜗牛到来,并声称它花费了 \( n \) 天爬树。如果这条信息与之前已采纳的信息矛盾(即不存在一棵树使得所有已采纳的声明和这条声明都为真),则忽略它。否则,采纳这条信息。
类型 \( 2 \) 的事件:一只属性为 \( a \)、\( b \) 的蜗牛到来,询问你如果它爬树,会花费多少天。你只能根据目前已采纳的信息给出答案。如果你无法精确确定答案(即根据现有的信息,答案不是唯一的),请报告无法确定。
你需要按顺序处理所有事件。
每个测试包含多个测试用例。第一行包含一个整数 \( t \) (\( 1 \le t \le 10^4 \))—— 测试用例的数量。接下来是它们的描述。
每个测试用例的第一行包含一个整数 \( q \) (\( 1 \le q \le 2 \cdot 10^5 \))—— 事件的数量。
接下来的 \( q \) 行中,每一行的第一个整数是 \( 1 \) 或 \( 2 \),表示事件的类型。
如果事件类型是 \( 1 \),则接下来有三个整数 \( a \)、\( b \) 和 \( n \) (\( 1 \le a, b, n \le 10^9 \),\( a > b \))。
如果事件类型是 \( 2 \),则接下来有两个整数 \( a \) 和 \( b \) (\( 1 \le a, b \le 10^9 \),\( a > b \))。
保证所有测试用例中 \( q \) 的总和不超过 \( 2 \cdot 10^5 \)。
对于每个测试用例,输出一行包含 \( q \) 个整数,每个整数对应一个事件,按顺序输出。具体来说,
对于每个类型为 \( 1 \) 的事件,如果你采纳消息,输出 \( 1 \);如果忽略消息,输出 \( 0 \);
对于每个类型为 \( 2 \) 的事件,输出一个整数,表示蜗牛将花费的天数。如果无法确定,输出 \( -1 \)。
对于 \( 30\% \)的数据,满足 \( a \cdot n \le 100 \)
对于 \( 60\% \)的数据,满足 \( a \cdot n \le 10000 \)
对于所有数据,满足\( q , \sum q \le 2 \cdot 10^5 \)