#include<iostream>
#include<fstream>
#include<vector>
#include<string.h>
#define r 699957
using namespace std;
struct elem {
unsigned int inf, ap;
elem(unsigned int a, unsigned int b){
inf = a;
ap = b;
}
};
vector <elem> h1[r+10], h2[r+10];
unsigned int a[1100000];
int l, u;
void add(vector <elem> h[], unsigned int x, int &nr){
int poz = x%r;
int cod = 1;
for (int i = 0; i < h[poz].size(); i++)
if (h[poz][i].inf == x){
h[poz][i].ap++;
cod = 0;
break;
}
if (cod == 1){
nr++;
h[poz].push_back(elem(x, 1));
}
}
void decrease(vector <elem> h[], int &nr, int &p, int n, int t){
int cod = 1, poz;
while (cod == 1){
poz = a[p]%r;
for (int i = 0; i < h[poz].size(); i++)
if (h[poz][i].inf == a[p]){
if (h[poz][i].ap > 1){
h[poz][i].ap--;
p++;
}
else {
if (t == 1 && nr-1 < n)
cod = 0;
else {
nr--;
h[poz][i] = h[poz][h[poz].size()-1];
h[poz].pop_back();
p++;
if (t==0 && nr==n)
cod = 0;
}
}
break;
}
}
}
int main(){
freopen("secv5.in", "r", stdin);
ofstream g("secv5.out");
char s[12];
int n, i = 0, j = 0, nr1 = 0, nr2 = 0, k = 1, p1, p2;
long long nr = 0;
scanf("%d %d %d", &n, &l, &u);
fgets(s, 12, stdin);
while (k <= n && nr1 < l){
fgets(s, 12, stdin);
for (i = 0; i < strlen(s)-1; i++)
a[k] = a[k]*10 + s[i]-'0';
add(h1, a[k], nr1);
add(h2, a[k], nr2);
k++;
}
nr2 = nr1;
p1 = p2 = 1;
decrease(h2, nr2, p2, l, 1);
nr = p2-p1+1;
for (j = k; j <= n; j++){
fgets(s, 12, stdin);
for (i = 0; i < strlen(s)-1; i++)
a[j] = a[j]*10 + s[i]-'0';
add(h1, a[j], nr1);
add(h2, a[j], nr2);
if (nr1 > u)
decrease(h1, nr1, p1, u, 0);
decrease(h2, nr2, p2, l, 1);
nr = nr+p2-p1+1;
}
g<<nr<<'\n';
return 0;
}