There are n armchairs, numbered from 1 to n from left to right. Some armchairs are occupied by people (at most one person per armchair), others are not. The number of occupied armchairs is not greater than n/2.

For some reason, you would like to tell people to move from their armchairs to some other ones. If the i-th armchair is occupied by someone and the j-th armchair is not, you can tell the person sitting in the i-th armchair to move to the j-th armchair. The time it takes a person to move from the i-th armchair to the j-th one is |i - j| minutes. You may perform this operation any number of times, but these operations must be done sequentially, i. e. you cannot tell a person to move until the person you asked to move in the last operation has finished moving to their destination armchair.

You want to achieve the following situation: every seat that was initially occupied must be free. What is the minimum time you need to do it?

Input

The first line contains one integer n (2 ≤ n ≤ 5000) — the number of armchairs.

The second line contains n integers a_1, a_2, ..., a_n (0 ≤ a_i ≤ 1). a_i = 1 means that the i-th armchair is initially occupied, a_i = 0 means that it is initially free. The number of occupied armchairs is at most n/2.

Output

Print one integer — the minimum number of minutes you have to spend to achieve the following situation: every seat that was initially occupied must be free.

Examples

Input


7
1 0 0 1 0 0 1


Output


3


Input


6
1 1 1 0 0 0


Output


9


Input


5
0 0 0 0 0


Output


0

Note

In the first test, you can perform the following sequence:

  1. ask a person to move from armchair 1 to armchair 2, it takes 1 minute; 
  2. ask a person to move from armchair 7 to armchair 6, it takes 1 minute; 
  3. ask a person to move from armchair 4 to armchair 5, it takes 1 minute. 



In the second test, you can perform the following sequence:

  1. ask a person to move from armchair 1 to armchair 4, it takes 3 minutes; 
  2. ask a person to move from armchair 2 to armchair 6, it takes 4 minutes; 
  3. ask a person to move from armchair 4 to armchair 5, it takes 1 minute; 
  4. ask a person to move from armchair 3 to armchair 4, it takes 1 minute. 



In the third test, no seat is occupied so your goal is achieved instantly.
# Problem: D. Armchairs
# Contest: Codeforces - Educational Codeforces Round 109 (Rated for Div. 2)
# URL: https://codeforces.com/contest/1525/problem/D
# Memory Limit: 512 MB
# Time Limit: 2000 ms
# 
# Powered by CP Editor (https://cpeditor.org)

from collections import defaultdict
from functools import reduce
from bisect import bisect_right
from bisect import bisect_left
#import sympy #Prime number library
import copy
def main():
        n=int(input())
        d=defaultdict(list)
        l=list(map(int,input().split()))
        seat=[]
        empty=[]
        ans=10**9
        for i in range(n):
        	if l[i]==1:
        		seat.append(i)
        	else:
        		empty.append(i)
        if len(empty)==n:
        	print(0)
        	return
        for i in range(len(seat)):
        	for j in range(len(empty)):
        		d[i].append(abs(seat[i]-empty[j]))
        	#print(d[i])
        if len(empty)==len(seat):
        	add=0
        	for i in range(len(empty)):
        		add+=d[i][i]
        	ans=add
        else:
        	for i in range(len(empty)-len(seat)):
        		add=min(d[0][i],d[0][i+1])
        		for j in range(i+1,len(seat)):
        			add+=min(d[j][j+i],d[j][j+i+1])
        		ans=min(ans,add)
        print(ans)
        		



def primes1(n): #return a list having prime numbers from 2 to n
    """ Returns  a list of primes < n """
    sieve = [True] * (n//2)
    for i in range(3,int(n**0.5)+1,2):
        if sieve[i//2]:
            sieve[i*i//2::i] = [False] * ((n-i*i-1)//(2*i)+1)
    return [2] + [2*i+1 for i in range(1,n//2) if sieve[i]]
    
def GCD(a,b):
    if(b==0):
        return a
    else:
        return GCD(b,a%b)
        
if __name__ == '__main__':
    main()