#include <stdio.h>
int swap1(int num[],int i,int low,int highest,int N)
{
int times=0;
for(int j=0;j<N;j++)
{
if(num[j]>highest)
{
while(num[i]<low)
{
num[i]++;
num[j]--;
times++;
}
}
}
if(!(num[i]>=low&&num[i]<=highest))
{
for(int j=0;j<N;j++)
{
while(low<num[j]&&!(num[i]>=low&&num[i]<=highest))
{
num[i]++;
num[j]--;
times++;
}
}
}
return times;
}
int swap2(int num[],int i,int low,int highest,int N)
{
int times=0;
for(int j=0;j<N;j++)
{
if(num[j]<low)
{
while(num[i]>highest)
{
num[i]--;
num[j]++;
times++;
}
}
}
if(!(num[i]>=low&&num[i]<=highest))
{
for(int j=0;j<N;j++)
{
while(highest>num[j]&&!(num[i]>=low&&num[i]<=highest))
{
num[i]--;
num[j]++;
times++;
}
}
}
return times;
}
int main()
{
int N,highest,low,times=0,target=0;
scanf("%d",&N);
int num[N];
for(int i=0;i<N;i++)
scanf("%d",&num[i]);
scanf("%d%d",&low,&highest);
for(int i=0;i<N;i++)
{
if(low<=num[i]&&num[i]<=highest)
continue;
else
{
if(num[i]<low)
times+=swap1(num,i,low,highest,N);
else(num[i]>highest)
;times+=swap2(num,i,low,highest,N);
}
}
for(int i=0;i<N;i++)
{
if(num[i]<low||num[i]>highest)
target=1;
}
if(!target&&N>=1&&N<=50)
printf("%d",times);
else
printf("%d",-1);
return 0;
}