import sys import bisect def main(): sys.setrecursionlimit(1 << 25) n = int(sys.stdin.readline()) P = list(map(int, sys.stdin.readline().split())) min_prefix = [float('inf')] * (n + 1) for i in range(1, n + 1): min_prefix[i] = min(min_prefix[i - 1], P[i - 1]) max_k = n dp = [dict() for _ in range(max_k + 2)] dp[1][min_prefix[1]] = 0 for i in range(2, n + 1): m = 1 current_min = min_prefix[i] dp[m][current_min] = 0 for m in range(2, max_k + 2): for i in range(1, n + 1): current_min = min_prefix[i] dp[m][current_min] = float('inf') for j in range(1, i): prev_min = min_prefix[j] if prev_min >= current_min: continue if prev_min in dp[m - 1]: prev_cost = dp[m - 1][prev_min] if prev_cost < dp[m][current_min]: dp[m][current_min] = prev_cost for k in range(1, n + 1): target_m = k + 1 if target_m > max_k + 1: print(0) continue min_cost = float('inf') if target_m in range(len(dp)) and dp[target_m]: min_cost = min(dp[target_m].values()) print(min_cost) if __name__ == "__main__": main()