#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;

int P[1001],Q[1000000];
int main(){
    int n,m;

while(true){
    cin >> n >> m;
    if(n==0 && m==0) break;

    P[0]=0;
    for(int i=1;i<=n;i++) scanf("%d",&P[i]);

    int num=0;
    for(int i=0;i<=n;i++){
	for(int j=i;j<=n;j++){
	    Q[num++]=P[i]+P[j];
	}
    }

    sort(Q,Q+num);

    int key,ans=0,idx;
    int *pos;
    for(int i=0;i<num;i++){
	key=m-Q[i];
	if(key<0) break;
 	pos=upper_bound(Q,Q+num,key);
	idx=distance(Q,pos);
	
	if(Q[i]+Q[idx-1]>ans) ans=Q[i]+Q[idx-1];
    }
    
    cout << ans << endl;
}

    return 0;
}