#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n,k,l,r;
int a[2000009];
long long g[2000009][11],s[2000009];
long long f[2000009][11],ans;
int q[2000009],head,tail,cnt;
int main()
{
cin>>n>>k>>l>>r;
for(int i=1;i<=n;i++)
{
cin>>a[i];
ans=max(ans,(long long)a[i]);
g[i][1]=1;
s[i]=s[i-1]+g[i][1];
}
if(k>1)
ans=0;
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
f[i][1]=a[i];
for(int j=2;j<=k;j++)
{
int nowl=0,nowr=1;
for(int i=1;i<=n;i++)
{
while(nowr<i&&a[nowr]*l<=a[i])
nowr++;
while(nowl<nowr&&a[nowl]*r<a[i])
nowl++;
int ll=1,rr=i-1;
if(nowr<nowl)
g[i][j]=0;
else
g[i][j]=(s[nowr-1]-s[nowl-1])%mod;
g[i][j]=(g[i][j]%mod+mod)%mod;
}
for(int i=1;i<=n;i++)
{
s[i]=s[i-1]+g[i][j];
s[i]=(s[i]%mod+mod)%mod;
}
}
for(int j=2;j<=k;j++)
{
head=1;
tail=0;
q[head]=0;
cnt=1;
for(int i=1;i<=n;i++)
{
while(cnt<i&&a[i]>=a[cnt]*l)
{
while(head<=tail&&f[q[tail]][j-1]<f[cnt][j-1])
tail--;
q[++tail]=cnt;
cnt++;
}
while(head<=tail&&a[q[head]]*r<a[i])
head++;
if(head<=tail)
{
if(f[q[head]][j-1]!=0)
{
f[i][j]=f[q[head]][j-1]+a[i];
}
else
f[i][j]=0;
}
else
f[i][j]=0;
if(j==k)
ans=max(ans,f[i][j]);
}
}
cout<<s[n]<<endl;
cout<<(ans%mod+mod)%mod;
return 0;
}