#include <bits/stdc++.h>
using namespace std;
const int M = 8005;
const int N = 1000005;
const int mod = 1000000007;
const int INF = 0x3f3f3f3f;
const long long lINF = 0x3f3f3f3f3f3f3f3fLL;
const int sINF = 0xcfcfcfcf;
int dp[M][3], n, a[M], cas;
int main() {
  while (~scanf("%d", &n)) {
    for (int i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
    }
    memset(dp, INF, sizeof(dp));
    dp[0][0] = dp[1][1] = 0;
    for (int i = 2; i <= n; i++) {
      for (int j = (i + 1) / 2; j >= 1; j--) {
        dp[j][0] = min(dp[j][0], dp[j][2]);
        dp[j][2] = dp[j][1] + max(0, a[i] - a[i - 1] + 1);
        dp[j][1] =
            min(dp[j - 1][0] + max(0, a[i - 1] - a[i] + 1),
                dp[j - 1][2] + max(0, min(a[i - 1], a[i - 2] - 1) - a[i] + 1));
      }
    }
    for (int j = 1; j <= (n + 1) / 2; j++)
      printf("%d%c", min(dp[j][0], min(dp[j][1], dp[j][2])),
             j == (n + 1) / 2 ? '\n' : ' ');
  };
}
