#include <iostream>
using namespace std;
int l[1003];
int n, c;
bool vis[1005];
int ans;
int k;
int dis(int a, int b) {
int d = l[b] - l[a];
return min(d, c - d);
}
void dfs(int la, int pd, int now) {
if (pd == k) {
ans = max(ans, now);
return;
}
int x = -1;
for (int i = la; i <= n; i++) {
if (!vis[i]) {
x = i;
break;
}
}
if (x == -1) return;
vis[x] = 1;
for (int i = x + 1; i <= n; i++) {
if (!vis[i]) {
vis[i] = 1;
dfs(x + 1, pd + 1, min(now, dis(x, i)));
vis[i] = 0;
}
}
vis[x] = 0;
}
int main() {
freopen("Cows.in", "r", stdin);
freopen("Cows.out", "w", stdout);
cin >> n >> c;
bool t1 = 1;
for (int i = 1; i <= n; i++) {
cin >> l[i];
if (l[i] * 2 > c) t1 = 0;
}
if (t1) {
for (k = 1; k * 2 <= n; k++) {
int ans = c;
for (int i = 1; i <= k; i++) {
ans = l[n - k + i] - l[i];
}
cout << ans << " ";
}
} else {
for (k = 1; k * 2 <= n; k++) {
ans = 0;
for (int i = 1; i <= n; i++) vis[i] = 0;
dfs(1, 0, 1e9);
cout << ans << " ";
}
}
return 0;
}