import java.util.*;
class Main {
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); int n = scanner.nextInt(); // size of the array
int k = scanner.nextInt(); // maximum distinct elements allowed
int[] b = new int[n];
for (int i = 0; i < n; i++) {
b[i] = scanner.nextInt(); // input array elements
}
int count = 0; // to count valid subarrays
Map
<Integer, Integer
> g
= new HashMap
<>(); // hashmap to store frequency of elements
for (int i = 0, j = 0; j < n; j++) {
// Add new elements on the right
g.put(b[j], g.getOrDefault(b[j], 0) + 1);
// While the size of the hashmap exceeds k, shrink from the left
while (g.size() > k) {
g.put(b[i], g.get(b[i]) - 1);
if (g.get(b[i]) == 0) {
g.remove(b[i]);
}
i++;
}
// Count subarrays ending at j
count += (j - i + 1); // All subarrays from i to j are valid
}
System.
out.
println(count
); // Output the count of valid subarrays }
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgbiA9IHNjYW5uZXIubmV4dEludCgpOyAvLyBzaXplIG9mIHRoZSBhcnJheQogICAgICAgIGludCBrID0gc2Nhbm5lci5uZXh0SW50KCk7IC8vIG1heGltdW0gZGlzdGluY3QgZWxlbWVudHMgYWxsb3dlZAogICAgICAgIGludFtdIGIgPSBuZXcgaW50W25dOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGJbaV0gPSBzY2FubmVyLm5leHRJbnQoKTsgLy8gaW5wdXQgYXJyYXkgZWxlbWVudHMKICAgICAgICB9CgogICAgICAgIGludCBjb3VudCA9IDA7IC8vIHRvIGNvdW50IHZhbGlkIHN1YmFycmF5cwogICAgICAgIE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPiBnID0gbmV3IEhhc2hNYXA8PigpOyAvLyBoYXNobWFwIHRvIHN0b3JlIGZyZXF1ZW5jeSBvZiBlbGVtZW50cwoKICAgICAgICBmb3IgKGludCBpID0gMCwgaiA9IDA7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgLy8gQWRkIG5ldyBlbGVtZW50cyBvbiB0aGUgcmlnaHQKICAgICAgICAgICAgZy5wdXQoYltqXSwgZy5nZXRPckRlZmF1bHQoYltqXSwgMCkgKyAxKTsKCiAgICAgICAgICAgIC8vIFdoaWxlIHRoZSBzaXplIG9mIHRoZSBoYXNobWFwIGV4Y2VlZHMgaywgc2hyaW5rIGZyb20gdGhlIGxlZnQKICAgICAgICAgICAgd2hpbGUgKGcuc2l6ZSgpID4gaykgewogICAgICAgICAgICAgICAgZy5wdXQoYltpXSwgZy5nZXQoYltpXSkgLSAxKTsKICAgICAgICAgICAgICAgIGlmIChnLmdldChiW2ldKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgZy5yZW1vdmUoYltpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENvdW50IHN1YmFycmF5cyBlbmRpbmcgYXQgagogICAgICAgICAgICBjb3VudCArPSAoaiAtIGkgKyAxKTsgLy8gQWxsIHN1YmFycmF5cyBmcm9tIGkgdG8gaiBhcmUgdmFsaWQKICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudCk7IC8vIE91dHB1dCB0aGUgY291bnQgb2YgdmFsaWQgc3ViYXJyYXlzCiAgICB9Cn0K