#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //#pragma comment(linker, "/STACK:102400000,102400000") typedef long long LL; typedef pair PII; typedef pair PIII; typedef vector vec; typedef vector mat; #define PB push_back #define FI first #define SE second #define gcd(x, y) __gcd(x, y) #define gcd3(x, y, z) __gcd(__gcd(x, y), z) const double EPS = 1e-30; const double PI = acos(-1.0); const int INF = 0x3f3f3f3f; const LL INFL = 0x3f3f3f3f3f3f3f3fLL; const int MAXN = 200000 + 10; const LL MOD = 1000000007; LL a[MAXN]; LL l[MAXN]; int main() { int T; scanf("%d", &T); while (T--) { int n; LL m, k; scanf("%d%I64d%I64d", &n, &m, &k); for (int i = 1; i <= n; ++i) { scanf("%I64d", &a[i]); } l[0] = 0; for (int i = 1; i <= n; ++i) { if (a[i] >= m) l[i] = l[i - 1] + 1; else l[i] = l[i - 1]; } LL res = 0; for (int i = 1; i <= n + 1 - k; ++i) { int ll = i + k - 1, rr = n; // cout << ll << " " << rr << endl; while (ll <= rr) { int mid = (ll + rr) / 2; //cout << mid << endl; if (l[mid] - l[i - 1] >= k) { rr = mid - 1; } else { ll = mid + 1; } } //cout << rr << endl; res += (n - ll + 1); } printf("%I64d\n", res); } return 0; }