#include <bits/stdc++.h>
#define int long long
using namespace std;
#define mod 1000000007LL
struct Cell{
int r,c;
bool operator<(const Cell& other) const{
if(r!=other.r)return r<other.r;
return c<other.c;
}
};
class dsu{
vector<int>parent,rank;
private:
dsu(int n){
parent.resize(n);
rank.resize(n);
for(int i=0;i<n;i++){
parent[i]=i;
rank[i]=1;
}
}
int find(int i){
return parent[i]==i ? i : (parent[i]=find(parent[i]));
}
void unite(int x,int y){
int s1=parent[x];
int s2=parent[y];
if(s1!=s2){
if(rank[s1]<rank[s2])parent[s1]=s2;
else if(rank[s2]>rank[s1])parent[s2]=s1;
else parent[s2]=s1, rank[s1]++;
}
}
};
// bool comparator(vector<int>&a , vector<int>&b){
// return a[2]<b[2];
// }
// bool comparator(pair<pair<int,int>,int> &a, pair<pair<int,int>,int> &b ){
// return a.second > b.second;
// }
int t;
int cnt=0;
bool check=false;
int fact(int n){
int ans=1;
for(int i=1;i<=n;i++){
ans=(ans*i)%mod;
}
return ans;
}
vector<int> factors(int n){
vector<int> v;
for(int i=2;i<n;i++){
if(n%i==0)v.push_back(i);
}
return v;
}
bool is_prime(int n){
if(n==2 || n==3)return true;
for(int i=2;i*i<=n;i++){
if(n%i==0)return false;
}
return true;
}
void solve() {
int n;
cin>>n;
int k;
cin>>k;
vector<int>v(n);
for(int i=0;i<n;i++)cin>>v[i];
// cout<<n<<" n "<<" k ";
// to count number of subarray whose count of distinct number <=k
int ans=0;
unordered_map<int,int>mp;
for(int i=0,j=0;j<n;j++){
mp[v[j]]=mp[v[j]]+1;
int d=mp.size();
while(d>k){
mp[v[j]]=mp[v[j]]-1;
if(mp[v[j]]==0){
mp.erase(v[j]);
}
i++;
d=mp.size();
}
ans+=(j-i+1);
}
cout<<ans<<endl;
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin>>t;
// int t=1;
while(t--){
cnt++;
// cout<<"count value : "<<cnt<<endl;
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZyAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAojZGVmaW5lIG1vZCAxMDAwMDAwMDA3TEwKIAogICAgc3RydWN0IENlbGx7CiAgICBpbnQgcixjOwogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ2VsbCYgb3RoZXIpIGNvbnN0ewogICAgICAgIGlmKHIhPW90aGVyLnIpcmV0dXJuIHI8b3RoZXIucjsKICAgICAgICByZXR1cm4gYzxvdGhlci5jOwogICAgfQp9OwogCmNsYXNzIGRzdXsKICAgIHZlY3RvcjxpbnQ+cGFyZW50LHJhbms7CiAKcHJpdmF0ZToKICAgIGRzdShpbnQgbil7CiAgICAgICAgcGFyZW50LnJlc2l6ZShuKTsKICAgICAgICByYW5rLnJlc2l6ZShuKTsKIAogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgICAgICBwYXJlbnRbaV09aTsKICAgICAgICAgICAgcmFua1tpXT0xOwogICAgICAgIH0KICAgIH0KIAogICAgaW50IGZpbmQoaW50IGkpewogICAgICAgIHJldHVybiBwYXJlbnRbaV09PWkgPyBpIDogKHBhcmVudFtpXT1maW5kKHBhcmVudFtpXSkpOwogICAgfQogCiAgICB2b2lkIHVuaXRlKGludCB4LGludCB5KXsKICAgICAgICBpbnQgczE9cGFyZW50W3hdOwogICAgICAgIGludCBzMj1wYXJlbnRbeV07CiAgICAgICAgaWYoczEhPXMyKXsKICAgICAgICAgICAgaWYocmFua1tzMV08cmFua1tzMl0pcGFyZW50W3MxXT1zMjsKICAgICAgICAgICAgZWxzZSBpZihyYW5rW3MyXT5yYW5rW3MxXSlwYXJlbnRbczJdPXMxOwogICAgICAgICAgICBlbHNlIHBhcmVudFtzMl09czEsIHJhbmtbczFdKys7CiAgICAgICAgfQogICAgfQp9OwogCiAKLy8gYm9vbCBjb21wYXJhdG9yKHZlY3RvcjxpbnQ+JmEgLCB2ZWN0b3I8aW50PiZiKXsKLy8gICAgIHJldHVybiBhWzJdPGJbMl07Ci8vIH0KIAovLyBib29sIGNvbXBhcmF0b3IocGFpcjxwYWlyPGludCxpbnQ+LGludD4gJmEsIHBhaXI8cGFpcjxpbnQsaW50PixpbnQ+ICZiICl7Ci8vICAgICByZXR1cm4gYS5zZWNvbmQgPiBiLnNlY29uZDsKLy8gfQogCmludCB0OwppbnQgY250PTA7CmJvb2wgY2hlY2s9ZmFsc2U7CgppbnQgZmFjdChpbnQgbil7CiAgICBpbnQgYW5zPTE7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgYW5zPShhbnMqaSklbW9kOwogICAgfQogICAgcmV0dXJuIGFuczsKfQoKdmVjdG9yPGludD4gZmFjdG9ycyhpbnQgbil7CiAgICB2ZWN0b3I8aW50PiB2OwogICAgZm9yKGludCBpPTI7aTxuO2krKyl7CiAgICAgICAgaWYobiVpPT0wKXYucHVzaF9iYWNrKGkpOwogICAgfQogICAgcmV0dXJuIHY7Cn0KCmJvb2wgaXNfcHJpbWUoaW50IG4pewogICAgaWYobj09MiB8fCBuPT0zKXJldHVybiB0cnVlOwogICAgZm9yKGludCBpPTI7aSppPD1uO2krKyl7CiAgICAgICAgaWYobiVpPT0wKXJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgaW50IG47CiAgICBjaW4+Pm47CiAgICBpbnQgazsKICAgIGNpbj4+azsKICAgIHZlY3RvcjxpbnQ+dihuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspY2luPj52W2ldOwogICAgLy8gY291dDw8bjw8IiBuICI8PCIgayAiOwogICAgLy8gdG8gY291bnQgbnVtYmVyIG9mIHN1YmFycmF5IHdob3NlIGNvdW50IG9mIGRpc3RpbmN0IG51bWJlciA8PWsKICAgIGludCBhbnM9MDsKICAgIHVub3JkZXJlZF9tYXA8aW50LGludD5tcDsKICAgIGZvcihpbnQgaT0wLGo9MDtqPG47aisrKXsKICAgICAgICBtcFt2W2pdXT1tcFt2W2pdXSsxOwogICAgICAgIGludCBkPW1wLnNpemUoKTsKICAgICAgICB3aGlsZShkPmspewogICAgICAgICAgICBtcFt2W2pdXT1tcFt2W2pdXS0xOwogICAgICAgICAgICBpZihtcFt2W2pdXT09MCl7CiAgICAgICAgICAgICAgICBtcC5lcmFzZSh2W2pdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpKys7CiAgICAgICAgICAgIGQ9bXAuc2l6ZSgpOwogICAgICAgIH0KICAgICAgICBhbnMrPShqLWkrMSk7CiAgICB9CiAgICBjb3V0PDxhbnM8PGVuZGw7Cn0KCmludDMyX3QgbWFpbigpIHsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CiAgICBjaW4+PnQ7CiAgICAvLyBpbnQgdD0xOwogICAgd2hpbGUodC0tKXsKICAgICAgICBjbnQrKzsKICAgICAgICAvLyBjb3V0PDwiY291bnQgdmFsdWUgOiAiPDxjbnQ8PGVuZGw7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQ==