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.
                                               /*BISMILLAHIR   RAHMANIR    RAHIM
                                               BY    THE     NAME    OF    ALLAH
                                               # AUTHOR: FAISAL  AHAMMED SHAWON*/
#include<bits/stdc++.h>
#include<algorithm>
#include<vector>
#include<numeric>
#define                            F                                         first
#define                            S                                         second
#define                            PB                                        push_back
#define                            MP                                        make_pair
#define                            REP(i,a,b)                                for(int i=a;i<b;i++)
#define                            no                                        cout<<"NO"<<endl;
#define                            yes                                       cout<<"YES"<<endl;
#define                            SQ(a)                                     (a)*(a)
#define                            pi                                        acos(-1.0)
typedef                            long long                                 ll;
typedef                            unsigned long long                        ull;
const                              int inf =                                 0x3f3f3f3f;
const                              int MAX =                                 25;
const                              int MOD =                                 1e9+7;
using namespace std;
void fast()
{
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
}
ll gcd(ll a,ll b)
{
    if(b==0)
    return a;
    else
    return gcd(b,a%b);
}
ll lcd(ll a,ll b)
{
    return (a*b)/gcd(a,b);
}
ll max_sum_subarrays(ll ara[],ll n)
{
    ll ans=0,sum=0;
    for(ll k=0;k<n;k++){
        sum=max(ara[k],sum+ara[k]);
        ans=max(ans,sum);
    }
    return ans;
}
bool f(ll a,ll b)
{
    return a>b;
}

ll comb(ll m, ll n)
{
    ll x = max(m-n,n),ans = 1,i=1;
    for(ll k=m;k>=x+1;k--){
        ans*=k;
        ans/=i;
        i++;
    }
    return ans;
}
int common(string p,string q,int m,int n){
    int a[m+1][n+1];
    int ans=0;
    for(int i=0;i<=m;i++){
        for(int j=0;j<=n;j++){
            if(i==0 || j==0){
                a[i][j]=0;
            }
            else if(p[i-1]==q[j-1]){
                a[i][j]=a[i-1][j-1]+1;
                ans=max(ans,a[i][j]);
            }
            else{
                a[i][j]=0;
            }
        }
    }
    return ans;
}

void solve_A()
{
     int n;
     cin>>n;
     if(n==100){
        cout<<1<<endl;
        return;
     }
     int k=100-n;
     int ans=0;
     for(int i=2;i<=min(n,k);i++){
        while(n%i==0 && k%i==0){
            n/=i;
            k/=i;
        }
     }
    cout<<n+k<<endl;
}
void solve_B()
{
    int n;
    cin>>n;
    int a[n+1];
    bool f=1;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(a[i]!=i){
            f=0;
        }
    }
    if(f){
        cout<<0<<endl;
        return;
    }
    else{
        if(a[n]==n || a[1]==1){
            cout<<1<<endl;
            return;
        }
        else if(a[1]==n && a[n]==1){
            cout<<3<<endl;
            return;
        }
        else{
            cout<<2<<endl;
            return;
        }
    }
}
void solve_C()
{

}
void solve_D()
{
    int n;
    cin>>n;
    int a[n+5];
    int mark[n+5]={0};
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(a[i]==1){
            mark[i]=1;
        }
    }
    int ans=0,p=INT_MAX,q=INT_MAX;
    int x,y;
    for(int i=0;i<n;i++){


        if(a[i]==1 && i==0){
        for(int j=i+1;j<n;j++){
            if(a[j]==0 && !mark[j]){

                ans+=j-i;
                mark[j]=1;
                break;
            }
          }
        }
        else if(a[i]==1 && i==n-1){
        for(int j=i-1;j>=0;j--){
            if(a[j]==0 && !mark[j]){
                ans+=i-j;
                mark[j]=1;
                break;
            }
          }
        }
        else if(a[i]==1){
             for(x=i+1;x<n;x++){
             if(a[x]==0 && !mark[x]){
                p=x-i;
                break;
               }
             }
             for(y=i-1;y>=0;y--){
             if(a[y]==0 && !mark[y]){
                q=i-y;
                break;
                }
             }
        if(p<q){
            ans+=p;
            mark[x]=1;
        }
        else{
            ans+=q;
            mark[y]=1;
        }
      }

    }
    cout<<ans<<endl;
}
int main()
{
    /*int t;
    cin>>t;
    while(t--){
           solve_B();
    }*/
    //solve_A();
    //solve_B();
    solve_D();
    return 0;
}
