氧气少年的水滴 2
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\sf I'm\ making\ more,\ just\ a\ little\ bit

\sf Spend\ a\ little\ more\ to\ get\ rid\ of\ it

\sf Smile\ a\ little\ more\ and\ I'm\ into\ it

       —— \text{OneRepublic},\ Sunshine
氧气少年将 n 个水滴排成一排,第 i 个水滴的饱和值为 a_i(1\leq a_i\leq 9)

每个水滴可以吸收其他水滴。例如:某一水滴目前的饱和值为 a,它吸收了一个饱和值为 b 的水滴,那么此水滴的饱和值变为 a+b

当某个水滴的饱和值增加到 10 的时候,这个水滴就会爆裂为两个饱和值为 1 的水滴(原水滴消失),分别向左和向右飞去,接下来:
  •  对于向左飞的水滴,他会飞到与原水滴左侧相邻的水滴处,被左侧相邻的水滴吸收(如果左侧有相邻的水滴),或飞到向左无穷远的位置。
  •  对于向右飞的水滴,他会飞到与原水滴右侧相邻的水滴处,被右侧相邻的水滴吸收(如果右侧有相邻的水滴),或飞到向右无穷远的位置。
请注意,对于空中两个相遇的、相向而行的水滴,它们只会"擦肩而过",换句话说,它们不受相遇水滴的任何影响。

已知氧气少年在第 p 个水滴上添加了一滴饱和值为 1 的水滴,请求出最终飞到向左无穷远的位置的水滴的数量和最终飞到向右无穷远的位置的水滴的数量。

输入描述:

第一行包含一个整数 T(1\leq T\leq 10^5),表示测试用例的组数。

对于每组测试用例:

第一行包含两个整数 n(1\leq n\leq 2\cdot 10^5),p(1\leq p\leq n),分别表示水滴的数量和添加水滴的位置。
第二行包含 n 个整数 a_1\dots a_n(1\leq a_i\leq 9),表示水滴的饱和值。

保证对于所有测试用例,n 的总和不超过 2\cdot 10^5

输出描述:

对于每组测试用例:

仅输出一行,包含两个整数,分别表示最终飞到向左无穷远的位置的水滴的数量和最终飞到向右无穷远的位置的水滴的数量。
示例1

输入

复制
3
3 2
9 9 9
4 2
9 9 9 8
3 2
9 8 9

输出

复制
2 2
3 1
0 0