#include <iostream>
#include <fstream>
using namespace std;
long long secvente[500001],modul[100001];
class Divk
{
int n,k,a,b;
long long sol;
int* v;
public:
Divk()
{
sol = 0;
for(int i = 0 ; i < 500001 ; i++)
secvente[i]= 0 ;
for(int i = 0 ; i < 100001 ; i++)
modul[i] = 0 ;
}
void Read()
{
ifstream f("divk.in");
ofstream g("divk.out");
f >> n >> k >> a >> b;
v = new int[n+3];
for(int i = 1 ; i <= n ; i++)
f>>v[i];
g << Solve();
}
long long Solve()
{
secvente[0] = 0;
for(int i=1;i<=n;i++)
{
secvente[i] = (secvente[i-1] + v[i]) % k;
if (i > b)
modul[secvente[i-b-1]]--;
if(i >= a)
modul[ secvente[i-a] ]++;
sol += modul[ secvente[i] ];
}
return sol;
}
};
int main()
{
Divk Object;
Object.Read();
return 0;
}