#include <bits/stdc++.h>
using namespace std;
const int MX = 5003;
int n, a[MX], dp[MX][MX / 2 + 4][2];
int DP(int x, int k, bool p) {
  if (k == 0) return 0;
  if (x >= n + 1) return 1e9;
  int &ret = dp[x][k][p];
  if (ret != -1) return ret;
  ret = 1e9;
  if (x == n) {
    if (p == 0) return ret = 1e9;
    return ret = DP(x + 1, k - 1, p);
  }
  if (x == n - 1) {
    if (p == 0)
      return ret = DP(x + 2, k - 1, 1) + max(0, a[x] - a[x + 1] + 1);
    else
      return ret = DP(x + 2, k - 1, 0) + max(0, a[x + 1] - a[x] + 1);
  }
  if (p == 0) {
    ret = DP(x + 1, k, 1) + max(a[x] - a[x + 1] + 1, 0);
    ret = min(ret, DP(x + 1, k, 0));
  } else {
    ret = DP(x + 2, k - 1, 1) +
          max(max(a[x + 1] - a[x + 2] + 1, a[x + 1] - a[x] + 1), 0);
    ret = min(ret, DP(x + 2, k - 1, 0) + max(a[x + 1] - a[x] + 1, 0));
  }
  return ret;
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int k = 1; k <= ((n + 1) / 2); k++) {
    cout << min(DP(1, k, 0), DP(1, k, 1)) << " ";
  }
}
