3 2
1 0 1
1 2
2 3
 10 10
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1
6 7
8 3
6 4
4 2
9 2
5 10
9 8
10 7
5 1
6 2

2
1
2
 0

import java.io.*;
import java.util.*;
public class Main
{
	int n,m,d[];
	ArrayList<Pair>[] list;
	ArrayList<Integer> ans;
	boolean visited[];
	private void solve()throws IOException
	{
		n=nextInt();
		m=nextInt();
		d=new int[n+1];
		int sumd=0,changed=0;
		for(int i=1;i<=n;i++)
		{
			d[i]=nextInt();
			if(d[i]==-1)
				changed=i;
			else
				sumd+=d[i];
		}
		list=new ArrayList[n+1];
		for(int i=1;i<=n;i++)
			list[i]=new ArrayList<>();
		ans=new ArrayList<>();
		for(int i=1;i<=m;i++)
		{
			int u=nextInt();
			int v=nextInt();
			list[u].add(new Pair(v,i));
			list[v].add(new Pair(u,i));
		}
		if(sumd%2!=0 && changed==0)
		{
			out.println(-1);
			return;
		}
		if(sumd%2!=0)
			d[changed]=1;
		for(int i=1;i<=n;i++)
			if(d[i]==-1)
				d[i]=0;
		visited=new boolean[n+1];
		dfs(1,0,-1);
		out.println(ans.size());
		for(int i:ans)
			out.println(i);
	}
	void dfs(int v,int p,int e)
	{
		visited[v]=true;
		for(Pair vv:list[v])
			if(!visited[vv.first])
				dfs(vv.first,v,vv.second);
		if(d[v]==1)
		{
			ans.add(e);
			d[p]=1-d[p];
		}
	}
	class Pair{
	    int first,second;
	    Pair(int a,int b){
	        first=a;
	        second=b;
	    }
	}

	 
	///////////////////////////////////////////////////////////

	public void run()throws IOException
	{
		br=new BufferedReader(new InputStreamReader(System.in));
		st=null;
		out=new PrintWriter(System.out);

		solve();

		br.close();
		out.close();
	}
	public static void main(String args[])throws IOException{
		new Main().run();
	}
	BufferedReader br;
	StringTokenizer st;
	PrintWriter out;
	String nextToken()throws IOException{
		while(st==null || !st.hasMoreTokens())
		st=new StringTokenizer(br.readLine());
		return st.nextToken();
	}
	String nextLine()throws IOException{
		return br.readLine();
	}
	int nextInt()throws IOException{
		return Integer.parseInt(nextToken());
	}
	long nextLong()throws IOException{
		return Long.parseLong(nextToken());
	}
	double nextDouble()throws IOException{
		return Double.parseDouble(nextToken());
	}
}