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.
// i made from fruits
// Just a writer
// bleed on keyboard
/*
Don't stop when you are tired
.... Stop when you done.
*/
//make it sense
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef double dbl;
ll n,m,s,t,a,b,x,y,u,k,c,z;
const int mod=1e9+7;
const int mxn=2e5+5;
//const double by=3.141592653;
ll mn=1e18,mx=0;
//map<char ,int >mp,pm;
//ll a,b;
//char ch[1001];
ll arr[2000000],arr2[2000000],arr3[2000000],wan[2000][2000];
//ll dp[210][500];
//map<ll,ll>mp;
//pair<ll,ll>arrj[1000001];
//char war[1001][1001];
//pair<ll,ll>pa[1001];
//char ch;
//map<string,ll >mp,pm,sa;
string str,str2;
string str4="abcdefghijklmnopqrstuvwxyz";

//const long long  N=100001;
//ll dp[205][205][205];

//double totle;

bool isprime(int f)
{
    if(f%2==0&&f!=2||f<2)return 0;
    for(int i=3;i*i<=f;i++)
    {
        if(f%i==0)return 0;
    }
    return 1;
}
/*
ll fsp(ll fr, ll se) {
    if (se == 0)
        return 1;
    ll res = fsp(fr, se / 2);
    if (se & 1)
        return (res * res* fr);
        return (res * res);
}

bool prime[(ll)1e7];
void seive()
{
   prime[0]=prime[1]=true;
   for(int i=2;i*i<=1e7;i++)
   {
       if(!prime[i])
       {
           for(int j=i*i;j<1e7;j+=i)
           {
             prime[j]=true;
           }
       }
   }

}
*/
ll max3(ll ma, ll mb ,ll mc)
{
    return max(ma,max(mc,mb));
}
ll min3(ll ma, ll mb ,ll mc)
{
    return min(ma,min(mc,mb));
}
bool valid(int r, int c)
{
    if(r>=0&&r<n&&c>=0&&c<n)return 1;
    return 0;
}
ll LCM(ll n1,ll n2)
{
    return (n1*n2)/__gcd(n1,n2);
}
set<ll>st;
int main()
{
    ios_base::sync_with_stdio(0);
    // freopen("input.txt","r", stdin);
	//freopen("output.txt","w", stdout);
  t=1;
   while(t--)
   {
      cin>>n;
      int l=0;
      for(int i=0;i<n;i++)
      {
          cin>>x;
          if(x==1)arr[l++]=i+1;
          else st.insert(i+1);
      }
      ll ans=0;
      for(int i=0;i<l;i++)
      {
            auto it=st.lower_bound(arr[i]);
            if(it==st.end())
           {
                it--;
                ans+=abs(arr[i]-*it);
                st.erase(*it);
                continue;
           }
           if(it==st.begin())
           {
               ans+=abs(arr[i]-*it);
                   st.erase(*it);
               continue;
           }
           auto is=it;
           --is;
           if(abs(*it-arr[i])<abs(arr[i]-*is))
           {
               ans+=abs(*it-arr[i]);
           }
           else
           {
               ans+=abs(*is-arr[i]);
               it=is;
           }
            st.erase(*it);
      }
     // st.clear();
      cout<<ans<<endl;
   }
    return 0;
}
