#include<iostream> #include<cstring> #include<cstdio> using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } int n,ans=99999999,d[30001],f[30001][4]; void dp(){ memset(f,127,sizeof(f)); f[0][1]=f[0][2]=f[0][3]=0; for(int i=1;i<=n;i++) for(int j=1;j<=3;j++) for(int k=1;k<=j;k++){ if(d[i]==j)f[i][j]=min(f[i][j],f[i-1][k]); else f[i][j]=min(f[i][j],f[i-1][k]+1); } ans=min(ans,f[n][1]); ans=min(ans,f[n][2]); ans=min(ans,f[n][3]); } int main(){ n=read(); for(int i=1;i<=n;i++)d[i]=read(); dp(); for(int i=1;i<=n>>1;i++)swap(d[i],d[n-i+1]); dp(); printf("%d",ans); return 0; }