#include<bits/stdc++.h>
using namespace std;
// #define int long long
#define ull unsigned long long
#define mid ((l+r)>>1)
#define mod (19260817)
#define mk make_pair
#define For(i,a,b) for(register int i=(a);i<=(b);++i)
#define rep(i,a,b) for(register int i=(a);i>=(b);--i)
inline namespace IO{
inline int read(){
int x=0;int f=1;char ch;
while((ch=getchar())<'0'||x>'9')if(ch=='-')f=-1;
while(ch>='0'&&ch<='9'){x=((x<<1)+(x<<3)+(ch^48)),ch=getchar();}
return x*f;
}
void write(char x){putchar(x);}
void write(const char *x){for(;*x;++x)putchar(*x);}
void write(char *x){for(;*x;++x)putchar(*x);}
void write(signed x){if(x<0)putchar('-'),x=-x;if(x>9)write(x/10);putchar('0'+x-x/10*10);}
void write(long long x){
if(x<0)putchar('-'),x=-x;
if(x>9)write(x/10);
putchar('0'+x-x/10*10);
}
void write(unsigned long long x){
if(x>9)write(x/10);
putchar('0'+x-x/10*10);
}
void write(double x){printf("%0.3lf",x);}
void write(const string &s){cout<<s;}
template<typename type1,typename type2,typename ...typen>
void write(type1 a1,type2 a2,typen ...an){
write(a1);
write(a2,an...);
}
}using namespace IO;
inline int gcd(int x,int y){return y==0?x:gcd(y,x%y);}
inline int lcm(int x,int y){return x/gcd(x,y)*y;}
const int N=1000005;
int n;
int a[N];
int dp[N][3];
signed main()
{
n=read();
For(i,1,n)a[i]=read();
memset(dp,0x3f,sizeof(dp));
dp[1][a[1]+1]=0;
For(i,2,n){
if(a[i]==-1){
dp[i][0]=min(dp[i][0],dp[i-1][0]);
// dp[i][1]=min(dp[i][1],dp[i-1][2]+1);
dp[i][2]=min(dp[i][2],dp[i-1][2]+2);
}else if(a[i]==0){
dp[i][0]=min(dp[i][0],dp[i-1][0]+1);
dp[i][1]=min(dp[i][1],dp[i-1][1]);
dp[i][2]=min(dp[i][2],dp[i-1][2]+1);
}else{
dp[i][0]=min(dp[i][0],dp[i-1][0]+2);
dp[i][1]=min(dp[i][1],dp[i-1][0]+1);
For(j,0,2)dp[i][2]=min(dp[i][2],dp[i-1][j]);
}
// write(i,": ",dp[i][0],' ',dp[i][1],' ',dp[i][2],'\n');
}
int ans=1<<30;
For(i,0,2)ans=min(ans,dp[n][i]);
if(ans>1e9)write("BRAK"),exit(0);
write(ans);
return 0;
}
/*
5
-1 1 0 -1 0
*/
这是第一次没过样例但AC的代码(我知道wa哪了,最后也调过了)