#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int Nm=2e6+2,bas=1e9+7;
ll a[Nm],dp[Nm][12],dm[Nm][12];
int main(){
int n,K,L,R;
cin>>n>>K>>L>>R;
for(int i=1;i<=n;i++)scanf("%ld",&a[i]);
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
dp[i][1]=i;
dm[i][1]=a[i];
}
int dl,dr;
for(int k=2;k<=K;k++){
dl=1;
dr=1;
for(int i=k;i<=n;i++){
while(dr<=n && a[dr]*L<=a[i])dr++;
while(dl<=n && a[dl]*R<a[i])dl++;
if(dr>dl){
dp[i][k]=(dp[dr-1][k-1]-dp[dl-1][k-1]+bas)%bas;
if(dp[i][k]>0)dm[i][k]=dm[dr-1][k-1]+a[i];
}
dp[i][k]=(dp[i][k]+dp[i-1][k])%bas;
dm[i][k]=max(dm[i][k],dm[i-1][k]);
}
}
ll ans=0;
if(dp[n][K]==0)cout<<0<<endl<<0;
else{
cout<<dp[n][K]<<endl;
ans=dm[n][K];
cout<<ans%bas;
}
return 0;
}