#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const double PI = 3.14159265358979323846; const double EPS = 1e-12; const int INF = 1<<25; typedef pair P; typedef long long ll; typedef unsigned long long ull; #define N 20 ll dp[N][N]; int main(){ int n; cin>>n; vector d(n+1); for(int i = 0; i <= n; i++) cin>>d[i]; for(int i = 0; i < N; i++) fill(dp[i], dp[i]+N, INF); for(int i = 0; i <= n; i++) dp[i][0] = i+1; for(int i = 0; i <= n; i++){ for(int j = 1; j <= d[i]; j++){ if(i>0) dp[i][j] = dp[i-1][j]+1; for(int k = 0; k < j; k++){ dp[i][j] = min(dp[i][j], dp[i][k] + dp[i][j-k-1]); } } } for(int i = 0; i <= d[n]; i++) printf("%ld%c", dp[n][i], i==d[n]?'\n':' '); return 0; }