#include <iostream>
#include <fstream>
using namespace std;
int i,j,k,l,n;
int a[30010],f[30010][5];
int min(int x,int y)
{
if (x>y)
return y;
return x;
}
int main()
{
ifstream fin("egroup.in");
ofstream fout("egroup.out");
fin>>n;
for (i=1;i<=n;i++)
fin>>a[i];
f[1][1]=f[1][2]=f[1][3]=1;
if (a[1]==1)
f[1][1]=0;
else
if (a[1]==2)
f[1][2]=0;
else
if (a[1]==3)
f[1][3]=0;
for (i=2;i<=n;i++)
{
f[i][1]=f[i-1][1];
if (a[i]!=1)
f[i][1]++;
f[i][2]=min(f[i-1][1],f[i-1][2]);
if (a[i]!=2)
f[i][2]++;
f[i][3]=min(min(f[i-1][1],f[i-1][2]),f[i-1][3]);
if (a[i]!=3)
f[i][3]++;
}
k=f[n][3];
f[1][1]=f[1][2]=f[1][3]=1;
if (a[1]==1)
f[1][1]=0;
else
if (a[1]==2)
f[1][2]=0;
else
if (a[1]==3)
f[1][3]=0;
for (i=2;i<=n;i++)
{
f[i][3]=f[i-1][3];
if (a[i]!=3)
f[i][3]++;
f[i][2]=min(f[i-1][1],f[i-1][2]);
if (a[i]!=2)
f[i][2]++;
f[i][1]=min(min(f[i-1][1],f[i-1][2]),f[i-1][3]);
if (a[i]!=1)
f[i][1]++;
}
l=f[n][1];
if (l<k)
fout<<l<<endl;
else
fout<<k<<endl;
fin.close();
fout.close();
return 0;
}