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;

#define vvi             vector<vector<int>>
#define ld              long double
#define mod             1000000007
#define ff              first
#define ss              second
#define int             long long
#define pb              push_back
#define mp              make_pair
#define pii             pair<int,int>
#define vpii            vector<pair<int,int>>
#define all(x)          (x).begin(),(x).end()
#define sz(a)           (int)((a).size())
#define vi              vector<int>
#define setbits(x)      __builtin_popcountll(x)
#define zrobits(x)      __builtin_ctzll(x)
#define db(...)         __f(#__VA_ARGS__, __VA_ARGS__)

template <typename Arg1>
void __f(const char* name, Arg1&& arg1) { cerr << name << " : " << arg1 << '\n'; }
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args) {
    const char* comma = strchr(names + 1, ',');
    cerr.write(names, comma - names) << " : " << arg1 << " | "; __f(comma + 1, args...);
}

const int mxN = 5e3 + 100;
int a[mxN];
int dp[mxN][mxN];
int dp2[mxN][mxN];
int n, m, k, q;
string s;
int in[mxN];

void test_case()
{
    cin >> n;

    int cnt = 0;

    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
        cnt += a[i];
    }

    for(int i = 1; i <= n; i++)
    {
        in[i] = 0;
    }

    cnt = 0;

    for(int i = 1; i <= n; i++)
    {
        if(a[i] == 1)
        {
            cnt++;
            in[cnt] = i;
        }
    }

    if(cnt == 0) 
    {
        cout << 0 << '\n';
        return;
    }

    for(int i = 0; i <= n; i++)
    {
        for(int j = 0; j <= n; j++)
        {
            dp[i][j] = 1e15;
            dp2[i][j] = 1e15;
        }
    }

    dp[0][0] = 0;
    dp2[0][0] = 0;

    for(int i = 1; i <= n; i++)
    {
        dp2[0][i] = 0;
    }

    for(int i = 1; i <= cnt; i++) 
    {
        for(int j = 1; j <= n; j++)
        {
            if(a[j] == 0)
            {
                dp[i][j] = min(dp[i][j], abs(in[i] - j) + dp2[i - 1][j - 1]);
            }
        }

        dp2[i][0] = dp[i][0];

        for(int j = 1; j <= n; j++)
        {
            dp2[i][j] = min(dp2[i][j - 1], dp[i][j]);
        }
    }

    int ans = 1e17;

    for(int i = 0; i <= n; i++) 
    {
        ans = min(ans, dp[cnt][i]);

       // db(i, dp[cnt][i]);
    }

    cout << ans << '\n';
}

int32_t main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif

    int t;
    t = 1;
    // cin >> t;

    for (int i = 1; i <= t; i++)
    {
        // cout << "Case #" << i << ": ";
        test_case();
    }

    return 0;
}
