# kmjpさんの解説を読んで。 # 自力では読解ができなかった。 N=int(input()) S=list(map(int,input().split())) DP=[[1<<60]*(S[N]+1) for i in range(N+1)] DP[0][0]=1 for i in range(N+1): for j in range(S[i]+1): DP[i][j]=min(DP[i][j],DP[i-1][j]+1) for k in range(j): DP[i][j]=min(DP[i][j],DP[i][k]+DP[i][j-1-k]) print(*DP[-1])