import std.stdio;
import std.string;
import std.array;
import std.conv;
import std.algorithm;

void main() {
	while(1) {
		long N, M;
		long [] P;
		string [] s;
		s = split(readln());
		N = to!int(s[0]);
		M = to!int(s[1]);
		if(N+M==0) break;
		P ~= 0;
		for(int i = 0; i < N; i++) {
			P ~= to!int(chomp(readln()));
		}
		long [] a;
		for(int i = 0; i < P.length; i++) {
			for(int j = 0; j < P.length; j++) {
				a ~= P[i] + P[j];
			}
		}

		sort(a);

		int j = to!int(a.length)-1;
		long res = 0;
		for(int i = 0; i < a.length; i++) {
			while(j >= 0 && a[i] + a[j] > M) j--;
			if(j >= 0 && a[i]+a[j] <= M && a[i]+a[j] > res)
				res = a[i] + a[j];
		}
		writeln(res);
	}
}