OI XX - baj

// https://szkopul.edu.pl/problemset/problem/3GXkVUEnWNZRn2C2VpX2uKmq/site/?key=statement

#include <bits/stdc++.h>

// #define GARY_DBG
#define GARY_LIB

#define int int64_t

constexpr int sizik = 1000 * 1001;

#define ar std::array

typedef std::vector<std::vector<int>> _kra;

constexpr int INF = 2ll * INT32_MAX;

int n;
int v[sizik];

ar<int, sizik> pref0, pref1, pref2;
ar<int, sizik> pref_minus1;
ar<int, sizik> suff_plus1;

inline void print_ans(int ans) {
    if (ans >= INF) {
        std::cout << "BRAK\n";
    } else {
        std::cout << ans << '\n';
    }
}

inline bool check(int start_idx, int s) {
    return (pref0[s] - pref0[start_idx - 1]) == (s - start_idx + 1);
}

inline int find_idx_last_zero(int start_idx) {
    assert(v[start_idx] == 0);
    assert(1 <= start_idx && start_idx <= n);
    int l = start_idx, r = n;
    while (l < r) {
        int s = (l + r + 1) / 2;
        if (check(start_idx, s)) {
            l = s;
        } else {
            r = s - 1;
        }
    }
    return l;
}

void solve() {
    std::cin >> n;

    for (int i = 1; i <= n; i++) {
        std::cin >> v[i];
    }

    if (std::is_sorted(v + 1, v + n + 1)) {
        std::cout << "0\n";
        return;
    }

    for (int i = 1; i <= n; i++) {
        pref0[i] = pref0[i - 1] + (v[i] == 0);
        pref1[i] = pref1[i - 1] + (v[i] == 1);
        pref2[i] = pref2[i - 1] + (v[i] == -1);
    }
    if (v[1] != -1) {
        pref_minus1[1] = INF;
    } else {
        pref_minus1[1] = 0;
    }
    for (int i = 2; i <= n; i++) {
        pref_minus1[i] = pref_minus1[i - 1];
        if (v[i] == 0) {
            pref_minus1[i] += 1;
        } else if (v[i] == 1) {
            pref_minus1[i] += 2;
        }
    }
    for (int i = n; i >= 1; i--) {
        if (((pref1[n] - pref1[i - 1]) == 0) || (v[i] != 1)) {
            suff_plus1[i] = INF;
        } else {
            suff_plus1[i] = pref0[n] - pref0[i - 1] + 2 * (pref2[n] - pref2[i - 1]);
        }
    }

    int ans = INF;
    if (v[1] == 1) {
        ans = suff_plus1[1];
    } else if (v[1] == 0) {
        for (int i = 2; i <= n; i++) {
            if (v[i] != 0) {
                ans = suff_plus1[i];
                break;
            }
        }
    } else {
        for (int i = 1; i <= n; i++) {
            int wyn = pref_minus1[i];
            int wyn1 = wyn + suff_plus1[i + 1];
            ans = std::min(ans, wyn1);
            if (i < n) {
                if (v[i + 1] == -1) {
                } else if (v[i + 1] == 0) {
                    int idx = find_idx_last_zero(i + 1);
                    int wyn2 = wyn + suff_plus1[idx + 1];
                    ans = std::min(ans, wyn2);
                } else if (v[i + 1] == 1) {
                    if (i < n - 1) {
                        if (v[i + 2] == 0) {
                            int idx = find_idx_last_zero(i + 2);
                            int wyn2 = 1 + wyn + suff_plus1[idx + 1];
                            ans = std::min(ans, wyn2);
                        }
                    }
                }
            }
        }
    }
    print_ans(ans);
}

int32_t main() {
#ifndef GARY_DBG
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);
#endif

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

    for (; t > 0; t--) {
        solve();
    }

    return 0;
}