#CF4086. 做任务

做任务

题目描述

nn 个任务。如果你完成了第 ii 个任务,你将获得 aia_i 个硬币。你每天最多只能完成一次任务。然而,一旦你完成了一个任务,你就不能在 kk 天内再次完成同一个任务。(例如,如果 k2k=2,你在第 11 天完成任务 11,那么你不能在第 22 天或第 33 天再次完成该任务,但你可以在第 44 天再次完成该任务。)

给你两个整数 ccdd 。找到可以在 dd 天内获得至少 cc 个硬币的最大 kk 值。如果不存在这样的 kk,则输出 Impossible。如果 kk 可以任意大,则输出 Infinity

输入格式

输入由多个测试用例组成。第一行包含整数 t(1t104)t(1≤t≤10^4) 代表测试用例数。测试用例的描述如下。

每个测试用例的第一行包含三个整数 n,c,d(2n2×105;1c1016;1d2×105)n,c,d(2≤n≤2×10^5;1≤c≤10^{16};1≤d≤2×10^5) 代表任务数、所需获取的硬币数和天数。

每个测试用例的第二行包含 nn 个整数 a1,a2,,an(1ai109)a_1,a_2,…,a_n(1≤a_i≤10^9) 代表每个任务的奖励。

所有测试用例中的 nn 之和不超过 2×1052×10^5,所有测试用例的 dd 之和也不超过 2×1052×10^5

输出格式

对于每个测试用例,输出以下内容之一。

  • 如果不存在这样的 kk,则输出 Impossible
  • 如果 kk 可以任意大,则输出 Infinity
  • 否则,输出一个整数,表示可以在 dd 天内获得至少 cc 个硬币的最大 kk 值。

请注意,程序对大小写敏感,您应该按照给定的方式输出字符串。

测试样例

6
2 5 4
1 2
2 20 10
100 10
3 100 3
7 2 6
4 20 3
4 5 6 7
4 100000000000 2022
8217734 927368 26389746 627896974
2 20 4
5 1
2
Infinity
Impossible
1
12
0

样例说明

在第一个测试案例中,在 k2k=2 的情况下,在 44 天内赚取 55 个硬币的一种方法如下:

第一天:完成任务 22,获得 22 个硬币。

第二天:完成任务 11,获得 11 枚硬币。

第三天:什么都不做。

第四天:完成任务 22,获得 22 个硬币。

我们总共赚了 2+1+2=52+1+2=5 个硬币。

在第二个测试案例中,我们可以通过第一次任务赚取 100100 个硬币,因为我们不需要再进行另一次任务,所以 kk 的值可以任意大。

在第三个测试案例中,无论我们怎么做,我们都不能在 33 天内赚 100100 个硬币。