#include <bits/stdc++.h>
using namespace std;
struct hehe {
  int to, next, id;
} e[600005];
int cnt = 0, h[300005] = {0};
int a[300005], st = 1;
int ans[300005] = {0}, vst[300005] = {0};
int n, m;
void add(int x, int y, int id) {
  cnt++;
  e[cnt].to = y;
  e[cnt].id = id;
  e[cnt].next = h[x];
  h[x] = cnt;
}
int dfs(int u) {
  int i, y;
  int ge = 0;
  vst[u] = 1;
  for (int i = h[u]; i; i = e[i].next) {
    y = e[i].to;
    if (vst[y]) continue;
    int d = dfs(y);
    if (d == 0) {
      ans[++ans[0]] = e[i].id;
      ge++;
    }
  }
  if (a[u] == -1) return 1;
  if (ge % 2 == a[u]) return 1;
  return 0;
}
void solve() {
  int x;
  x = dfs(st);
  if (x == 0) {
    printf("-1\n");
    return;
  }
  printf("%d\n", ans[0]);
  for (int i = 1; i <= ans[0]; i++) printf("%d\n", ans[i]);
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    if (a[i] == -1) st = i;
  }
  for (int i = 1; i <= m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    add(x, y, i);
    add(y, x, i);
  }
  solve();
  return 0;
}
