using namespace std;
#include <cstdio>
#include <vector>
#include <ctime>
#include <algorithm>
#define II inline
#define ll long long
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define N_MAX (1<<20)+2
#define L_MAX 1<<24
#define f first
#define s second
#define IN "secv5.in"
#define OUT "secv5.out"
#define MOD 666013
char buffer[L_MAX];
unsigned int V[N_MAX];
unsigned int M[N_MAX],P[N_MAX];
int K(-1),N,L,U;
int AA[90];
vector< pair<unsigned,int> > A(N_MAX);
II unsigned int read()
{
unsigned int aux(0);
for(;buffer[K] > '9' || buffer[K] < '0';++K);
for(;buffer[K] <= '9' && buffer[K] >= '0';++K)
aux = aux * 10 + buffer[K] - '0';
return aux;
}
II void scan()
{
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
fread(buffer,1,1<<24,stdin);
fclose(stdin);
N = read();
L = read();
U = read();
A.resize(N+1);
FOR(i,1,N)
M[i] = A[i].f = read(),
A[i].s = i;
}
II void hash()
{
unsigned last,nr(1);
sort(A.begin()+1,A.end());
last = A[1].f;
FOR(i,1,N)
{
if(A[i].f != last)
last = A[i].f,
++nr;
M[ A[i].s ] = nr;
}
}
II void add(int A[], int b)
{
int B[90]={0};
for(;b>0;B[++B[0]] = b%10 , b/= 10);
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
II void sub(int A[], int b)
{
int B[90]={0};
for(;b>0;B[++B[0]] = b%10 , b/= 10);
int i, t = 0;
for (i = 1; i <= A[0]; i++)
A[i] += (t = (A[i] -= B[i] + t) < 0) * 10;
for (; A[0] > 1 && !A[A[0]]; A[0]--);
}
II int maxx(int y,unsigned int xx)
{
int x = (int) xx;
return max(x,y);
}
II long long solve(int A)
{
int X(0),x(1);
memset(V,0,sizeof(V));
FOR(i,1,N)
{
if(!V[ M[i] ])
++X;
++V[ M[i] ];
for(;X <= A && i<=N;)
{
if( !V[ M[i+1] ] && X == A)
break;
P[i] = x;
++i;
if(! V[ M[i] ] )
++X;
++V[ M[i] ];
}
for(;X > A && x<=N;)
{
if( !(V[ M[x] ] - 1) )
--X;
--V[ M[x] ];
++x;
}
P[i] = x;
}
// if(kk == 1)
// FOR(i,1,N)
// add(AA, maxx(0,i-P[i]+1) );
// else
// FOR(i,1,N)
// sub(AA, maxx(0,i-P[i]+1) );
long long rez(0);
FOR(i,1,N)
rez += (long long) (i-P[i]+1);
if(rez < 0)
rez = 0;
return rez;
}
int main()
{
scan();
hash();
//solve(U,1);
//solve(L-1,2);
//for(int i=AA[0];i>=1;--i)
// printf("%d",AA[i]);
printf("%lld\n", solve(U) - solve(L-1) );
//printf("\nYour Program runs for %d ms",clock() );
return 0;
}