#include
#include
#include
using namespace std;
const int maxn=10010;
int n,m,cnt;
int to[maxn<<1],next[maxn<<1],head[maxn],f[maxn][2],fa[maxn],c[maxn];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<‘0‘||gc>‘9‘) {if(gc==‘-‘) f=-f; gc=getchar();}
while(gc>=‘0‘&&gc<=‘9‘) ret=ret*10+gc-‘0‘,gc=getchar();
return ret*f;
}
inline void add(int a,int b)
{
to[cnt]=b,next[cnt]=head[a],head[a]=cnt++;
}
void dfs(int x)
{
if(x<=n)
{
f[x][c[x]]=0,f[x][c[x]^1]=1<<20;
return ;
}
for(int i=head[x];i!=-1;i=next[i]) if(to[i]!=fa[x])
{
fa[to[i]]=x,dfs(to[i]);
f[x][0]+=min(f[to[i]][0],f[to[i]][1]+1);
f[x][1]+=min(f[to[i]][1],f[to[i]][0]+1);
}
}
int main()
{
m=rd(),n=rd();
int i,a,b;
memset(head,-1,sizeof(head));
for(i=1;i<=n;i++) c[i]=rd();
for(i=1;i