//题目并不算难,但是特么的就是坑死你。。。
//用数组a[]维护每轮的结果,a[i]就是代表走到i的概率。。。还需借助辅助数组q[]。
#include<stdio.h>
#include<string.h>
#define max 205
int n,m,l,r;
double q[max],a[max];
int main(){
while(scanf("%d%d%d%d",&n,&m,&l,&r)==4,n+m+l+r){
memset(a,0,sizeof(a));
memset(q,0,sizeof(q));
a[1]=1;
for(int j=0;j<m;j++){
int w;
scanf("%d",&w);
w%=n;
//memset(q,0,sizeof(q));
for(int i=1;i<=n;i++){
if(a[i]==0){
continue;
}
int rr=i+w;
while(rr>n){
rr-=n;
}
q[rr]+=a[i]*0.5;
int ll=i-w;
while(ll<=0){
ll+=n;
}
q[ll]+=a[i]*0.5;
}
memcpy(a,q,sizeof(q));
memset(q,0,sizeof(q));
}
double ans=0;
for(int i=l;i<=r;i++){
ans+=a[i];
}
printf("%.4lf
",ans);
}
}