公司里新来了一位送货员,他需要开车去不同的地点运送特定数量的货物。他需要运送至少 $X$ 个货物,而卡车最多能承载 $Y$ 个货物。如果货物过多,卡车会因为超重而抛锚;如果货物过少,则意味着他没有完成任务。在装货站,有一排箱子可以供他装载,每个箱子里装有指定数量的货物。
这位司机并不是最聪明的人。由于他太害羞而不敢寻求帮助,他决定在这一排箱子中随机选择一个起点,然后在从起点到末尾的箱子中(包含起点和末尾)随机选择一个终点。这两个点之间的所有箱子(包含起点和终点)都会被装上卡车。
你和其他员工开始打赌:卡车是否会抛锚、他带的货物是否太少,或者他是否足够幸运,能够顺利完成任务。这让你感到好奇:每种情况发生的实际概率是多少?为了简化问题,假设司机总是能够把所有选中的箱子装进卡车(毕竟他被录用了,说明他还是有一些本领的)。
输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。 每个测试用例包含三行。第一行包含一个整数 $N$,表示箱子的数量。第二行包含一个长度为 $N$ 的字符串(由 'A'-'Z' 组成),记为 $B_1B_2...B_N$(无空格),表示装货码头上箱子中货物的数量,顺序与它们在码头上的排列顺序一致。'A' 代表空箱,'B' 代表装有 1 个货物的箱子,以此类推,直到 'Z' 代表装有 25 个货物的箱子。第三行包含两个数字 $L$ 和 $U$。$L$ 是司机需要运送的货物数量,$U$ 是卡车在抛锚前能承载的最大货物数量。
输出格式
对于每个测试用例,在一行中输出三个浮点数。第一个数字表示司机成功的概率,第二个数字表示他带的货物太少的概率,第三个数字表示卡车抛锚的概率。
数据范围
- $0 < T \le 100$
- $1 < N \le 200000$
- 'A' $\le B_i \le$ 'Z'
- $0 \le L \le U \le 50000$
- 线段的起点和终点均服从均匀概率分布。
- 任何与正确答案误差在 $10^{-6}$ 以内的答案都将被接受。
样例
输入 1
2 4 KCHA 2 9 3 BCD 4 5
输出 1
0.5 0.25 0.25 0.16666667 0.72222222 0.11111111