1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 #include<cstring>
5 #include<cstdlib>
6 #include<algorithm>
7 using namespace std;
8 typedef long long LL;
9 const int MAXN = 51;
10 const int MAXC = 1001;
11 int n,m,Max,ans;
12 int a[MAXN];
13 bool f[2][MAXC];
14
15 inline int getint(){
16 int w=0,q=1;char c=getchar();
17 while(c!=‘-‘ && (c<‘0‘ || c>‘9‘)) c=getchar();
18 if(c==‘-‘) q=-1,c=getchar();
19 while(c>=‘0‘ && c<=‘9‘) w=w*10+c-‘0‘,c=getchar();
20 return w*q;
21 }
22
23 int main()
24 {
25 n=getint();m=getint();Max=getint();
26 for(int i=1;i<=n;i++) a[i]=getint();
27 f[0][m]=1; int tag=1;
28 for(int i=1;i<=n;i++) {
29 tag^=1;
30 for(int j=0;j<=Max;j++) {
31 if(!f[tag][j]) continue;
32 if(j+a[i]<=Max) f[tag^1][j+a[i]]=1;
33 if(j-a[i]>=0) f[tag^1][j-a[i]]=1;
34 f[tag][j]=0;
35 }
36 }
37 ans=-1; tag^=1;
38 for(int i=0;i<=Max;i++) if(f[tag][i]) ans=max(ans,i);
39 printf("%d",ans);
40 return 0;
41 }