近战法师诺艾儿
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

“ 我的梦想是成为优秀的魔术师,(夢は、立派な魔術師になって、)
  踏上旅途探索各种各样的地方,(色んな所を旅してみたり、) 
  并且成为别人的英雄,(誰かにとってのヒーローになったり、)
  ……之类的。(…とか。) ”
                                                                                   ——诺艾儿·柯涅尔

众所周知:法师都擅长近战。

在Alice In Cradle的世界里,诺艾儿是出身于正统精灵的炼金术师的家系中分出的柯涅尔家族的后裔,是精灵和兽人的混血。立志成为姐姐一样帅气优秀的魔法使,并对老师所说的、传说在魔法云雾外 “镶嵌在夜空的天花板上的宝石般的繁星” 感到憧憬。在第二天得知前一天夜里出现魔族暴动、伊夏同学陷入危险后,踏上旅途。

身为一名合格的魔法师,诺艾儿当然有一支属于自己的魔杖。


不过在学习和理解咒文“聚能火球”的时候,诺艾儿遇到了一个问题:

“聚能火球”的咒文是由 n 个神秘符号(每个符号都是一个整数)组成的序列。

据说,只有找到所有的隐藏咒文序列,才能理解“聚能火球”的咒文。隐藏咒文序列是指序列中连续的片段,这些片段恰好包含 $k$ 个不同的数字,并且它们的长度必须在 l 到 r 之间(包括 l 和 r )。

形式化描述为:给定一个长度为 n 的序列 a 以及整数 kl、 r 。你需要找出满足以下条件的边界 b 和 c 的数量:
1.  1\leq b\leq c\leq n ;
2. 在元素[a_b, a_{b + 1}, \cdots, a_c] 中恰好有 k 个不同的数字;
3.  l\leq c - b + 1\leq r 。

请帮诺艾儿学习这段咒文,不然诺艾儿就永远只能做一名只会魔法霰弹的近战法师了。

输入描述:

每个测试由多个测试用例组成。

第一行包含一个整数 t ( 1\leq t\leq10^4 )——测试用例的数量。

接下来描述各个测试用例。

每个测试用例的第一行包含四个整数:n  、 k 、l  和 r1\leq k\leq n\leq2\cdot10^5 , 1\leq l\leq r\leq n )。

第二行包含 n 个数字 a_i ( 1\leq a_i\leq10^9 )——那些神秘符号。

保证所有测试用例中 n 的总和不超过 2\cdot10^5

输出描述:

对于每个测试,在单独的一行输出一个整数——满足指定条件的连续子数组的数量。
示例1

输入

复制
5
1 1 1 1
5
5 2 2 3
1 2 1 3 2
6 3 1 6
1 2 3 1 2 3
4 1 1 2
7 7 7 7
7 3 2 4
1 2 1 2 3 2 1

输出

复制
1
5
10
7
5