#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);++i)
#define pb push_back
vector<int> G[1000];
int g[1000];
void dfs(int v){
	bool is[1001]={};
	for(int u:G[v]){
		if(g[u]<0) dfs(u);
		is[g[u]]=1;
	}
	rep(i,1001) if(!is[i]){
		g[v]=i;
		break;
	}
}
int v[1000],gr[1001];
int main(){
	int N,M;
	cin>>N>>M;
	rep(i,N) cin>>v[i];
	rep(i,M){
		int a,b;
		cin>>a>>b;
		a--,b--;
		G[a].pb(b);
	}
	rep(i,N) g[i]=-1;
	rep(i,N) dfs(i);
	rep(i,N) gr[g[i]]^=v[i];
	bool a=false;
	rep(i,1001) if(gr[i]) a=true;
	if(a) puts("1");
	else puts("2");
}