#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
void comp(vector<int>& v) {
int n = v.size();
vector<pair<int, int>> p(n);
for (int i = 0; i < n; ++i) {
p[i] = {v[i], i};
}
sort(p.begin(), p.end());
int id = 0;
if (n > 0) {
v[p[0].second] = 0;
}
for (int i = 1; i < n; ++i) {
if (p[i].first != p[i - 1].first) {
id++;
}
v[p[i].second] = id;
}
}
long long calc(const vector<int>& v, int k, int n) {
if (k <= 0) return 0;
long long raspuns = 0;
int stanga = 0;
int diferite = 0;
vector<int> fr(n + 1, 0);
for (int dreapta = 0; dreapta < n; ++dreapta) {
if (fr[v[dreapta]] == 0) {
diferite++;
}
fr[v[dreapta]]++;
while (diferite > k) {
fr[v[stanga]]--;
if (fr[v[stanga]] == 0) {
diferite--;
}
stanga++;
}
raspuns += (dreapta - stanga + 1);
}
return raspuns;
}
int main() {
ifstream fin("secv5.in");
ofstream fout("secv5.out");
int n, l, u;
if (!(fin >> n >> l >> u)) return 0;
vector<int> v(n);
for (int i = 0; i < n; ++i) {
fin >> v[i];
}
comp(v);
long long sus = calc(v, u, n);
long long jos = calc(v, l - 1, n);
fout << sus - jos << "\n";
return 0;
}