import java.util.*;
class Main {
public static void main
(String[] args
) { int[] nums = {1, 2, 1, 2, 3};
int k = 2;
if (k <= 0) {
return;
}
int n = nums.length;
long count = 0;
int left = 0;
Map
<Integer, Integer
> freqMap
= new HashMap
<>();
for (int right = 0; right < n; right++) {
freqMap.put(nums[right], freqMap.getOrDefault(nums[right], 0) + 1);
while (freqMap.size() > k) {
int leftElement = nums[left];
freqMap.put(leftElement, freqMap.get(leftElement) - 1);
if (freqMap.get(leftElement) == 0) {
freqMap.remove(leftElement);
}
left++;
}
count += (right - left + 1);
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gbnVtcyA9IHsxLCAyLCAxLCAyLCAzfTsKICAgICAgICBpbnQgayA9IDI7CgogICAgICAgIGlmIChrIDw9IDApIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKDApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpbnQgbiA9IG51bXMubGVuZ3RoOwogICAgICAgIGxvbmcgY291bnQgPSAwOwogICAgICAgIGludCBsZWZ0ID0gMDsKICAgICAgICBNYXA8SW50ZWdlciwgSW50ZWdlcj4gZnJlcU1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKCiAgICAgICAgZm9yIChpbnQgcmlnaHQgPSAwOyByaWdodCA8IG47IHJpZ2h0KyspIHsKICAgICAgICAgICAgZnJlcU1hcC5wdXQobnVtc1tyaWdodF0sIGZyZXFNYXAuZ2V0T3JEZWZhdWx0KG51bXNbcmlnaHRdLCAwKSArIDEpOwoKICAgICAgICAgICAgd2hpbGUgKGZyZXFNYXAuc2l6ZSgpID4gaykgewogICAgICAgICAgICAgICAgaW50IGxlZnRFbGVtZW50ID0gbnVtc1tsZWZ0XTsKICAgICAgICAgICAgICAgIGZyZXFNYXAucHV0KGxlZnRFbGVtZW50LCBmcmVxTWFwLmdldChsZWZ0RWxlbWVudCkgLSAxKTsKICAgICAgICAgICAgICAgIGlmIChmcmVxTWFwLmdldChsZWZ0RWxlbWVudCkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGZyZXFNYXAucmVtb3ZlKGxlZnRFbGVtZW50KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxlZnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY291bnQgKz0gKHJpZ2h0IC0gbGVmdCArIDEpOwogICAgICAgIH0KCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGNvdW50KTsKICAgIH0KfQo=