import java.util.*;

public class Main {

    static final long INF = (long) 1e18;

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();

        long[] a = new long[n + 1];
		for (int i = 1; i <= n; i++) {
            a[i] = sc.nextLong();
        }
       
        long[][] dp = new long[n + 1][101];
        for (int i = 0; i <= n; i++) {
            Arrays.fill(dp[i], INF);
        }

        // Khali prefix
        dp[0][0] = 0;
		for (int i = 1; i <= n; i++) {
            long sum = 0;
            // Akhari block = A[j ... i]
            for (int j = i; j >= 1; j--) {
                sum += a[j];
                if (sum > 100) {
                    break;
                }
                int cost = i - j;
                // Pichla block sum
                for (int previousSum = 0;
                     previousSum <= sum;
                     previousSum++) {

                    if (dp[j - 1][previousSum] == INF) {
                        continue;
                    }

                    dp[i][(int) sum] = Math.min(
                        dp[i][(int) sum],
                        dp[j - 1][previousSum] + cost
                    );
                }
            }
        }

        long answer = INF;

        for (int lastSum = 0; lastSum <= 100; lastSum++) {
            answer = Math.min(answer, dp[n][lastSum]);
        }

        System.out.println(answer);
    }
}
