#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define MAX 12 int dp[MAX][MAX]; vector s; int main(){ int n; scanf("%d", &n); for (int i = 0; i <= n; i++){ int a; scanf("%d", &a); s.push_back(a); } for (int i = 0; i <= s[0]; i++){ dp[0][i] = i+1; } for (int i = 1; i = j||ne<0||j<0){ continue; } if (k >= j){ continue; } dp[i][j] = min(dp[i][j], dp[i][k] + dp[i][ne]); } if (i&&s[i - 1] >= j){ dp[i][j] = min(dp[i][j], dp[i - 1][j] + 1); } } } for (int i = 0; i <= s.back(); i++){ if (i){ cout << " "; } cout << dp[s.size() - 1][i]; } puts(""); return 0; }