#include <bits/stdc++.h>
using namespace std;
const int N=501;
int n,m,ans=-1;
int dt[N],k[N];
std::queue<int>q1;
std::queue<int>q2;
inline void bbfs(int x,int bs){
if(x+k[bs]>=0&&x+k[bs]<=m&&dt[x-k[bs]]<x+k[bs]){
if(bs==n){
ans=max(ans,x+k[bs]);
return;
}
q1.push(x+k[bs]);q2.push(bs+1),dt[x+k[x]]=x+k[bs];
}
if(x-k[bs]>=0&&x-k[bs]<=m&&dt[x-k[bs]]<x-k[bs]){
if(bs==n){
ans=max(ans,x-k[bs]);
return;
}
q1.push(x-k[bs]);q2.push(bs+1),dt[x-k[x]]=x-k[bs];
}
}
inline void bfs(){
while(q1.size()){
bbfs(q1.front(),q2.front());
q1.pop();q2.pop();
}
}
int main(){
int a;
std::cin >>n>>a>>m;
for(int i=1;i<=n;i++)std::cin >>k[i];
q1.push(a);q2.push(1);
bfs();
std::cout <<ans;
return 0;
}