大师和他的领域
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

搬运大师有一个把握值 k。给定 n 个货物,其中第 i 个货物的权值为 a_i。给定 (l, r),搬运大师可以进入``拿捏领域''状态,当且仅当:

  • 1 \leq l \leq r \leq n.
  • 区间 [l, r] 内必须包含权值为 k 的货物。即:存在 i \in [l, r],使得 a_i = k
  • 区间中权值大于 k 的货物数量必须等于权值小于 k 的货物数量。

求能让搬运大师进入``拿捏领域''状态的数对 (l, r) 的数量。

输入描述:

输入包含多组数据。

首先输入一行一个整数 T (1 \leq T \leq 10^4),表示数据的组数。

对于每组数据,首先输入一行两个整数 n, k (1 \leq n \leq 2 \cdot 10^5, -10^9 \leq k \leq 10^9)。

接下来输入一行 n 个整数 a_1,a_2,\ldots a_n (-10^9 \leq a_i \leq 10^9),其中 a_i 表示第 i 个货物的权值。保证存在 j (1 \leq j \leq n),使得 a_j = k

保证对于一个测试点的所有数据,n 的和不超过 2 \cdot 10^5

输出描述:

对于每组数据,输出一行一个整数,表示能让搬运大师进入“拿捏领域”状态的数对 (l, r) 的数量。
示例1

输入

复制
3
7 4
5 7 2 4 3 1 6
3 0
-100 0 100
5 2
1 2 2 2 3

输出

复制
4
2
7

说明

在第一组数据中,有且仅有 [4],[7,2,4],[5,7,2,4,3],[5,7,2,4,3,1,6]4 个区间满足条件。