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.
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;

    #define  prec(n)        fixed<<setprecision(n)
    #define  optimize       ios::sync_with_stdio(0); cin.tie(0);
    #define  PI             acos(-1.0)
    #define  RESET(a, b)    memset(a, b, sizeof(a))
    #define  pb             push_back
    #define  sz(v)          v.size()
    #define  pii            pair<int,int>
    #define  pll            pair<ll,ll>
    #define  ff             first
    #define  ss             second
    #define  vv             vector<int>
    #define  all(v)         v.begin(),v.end()

    const ll MOD= 1e9+7;
    inline void normal(ll &a) { a %= MOD; (a < 0) && (a += MOD); }
    inline ll modMul(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a*b)%MOD; }
    inline ll modAdd(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); return (a+b)%MOD; }
    inline ll modSub(ll a, ll b) { a %= MOD, b %= MOD; normal(a), normal(b); a -= b; normal(a); return a; }
    inline ll modPow(ll b, ll p) { ll r = 1; while(p) { if(p&1) r = modMul(r, b); b = modMul(b, b); p >>= 1; } return r; }
    inline ll modInverse(ll a) { return modPow(a, MOD-2); }inline ll modDiv(ll a, ll b) { return modMul(a, modInverse(b)); }
    inline ll mod(ll a, ll m){ if(a<0) return m-(abs(a)%m); else if(a<m) return a; else return (a%m); }

    const int MAX = 504;
    const int N = 2e5+7;
    const int INF = 1e9;
    const int LN =  100;

    int dp[2507][5007];

int main()
{
    optimize
    int t=1; //cin>>t;
    while(t--){
         int n;
         cin>>n;
         int a[n+2];
         vector<int>person,chair;
         for(int i=0;i<n;i++){
             cin>>a[i];
             if(a[i]) person.pb(i);
             else chair.pb(i);
         }
         if(sz(person)==0){
            cout<<"0\n";
            continue;
         }
         for(int i=0;i<2507;i++) for(int j=0;j<5007;j++) dp[i][j]=INF;
         for(int i=0;i<sz(person);i++){
            for(int j=i;j<sz(chair);j++){
                if(i==0){
                    if(j==0) dp[i][j]=abs(person[i]-chair[j]);
                    else dp[i][j]=min(dp[i][j-1],abs(person[i]-chair[j]));
                }
                else
                    dp[i][j]=min(dp[i][j-1],dp[i-1][j-1]+abs(person[i]-chair[j]));
            }
         }
         cout<<dp[sz(person)-1][sz(chair)-1]<<"\n";
    }
}
