#include <bits/stdc++.h>
using namespace std;
long long int power(long long int a, long long int b) {
  if (b == 0) return 1;
  long long int z = power(a, b / 2);
  if (b % 2) return a * z * z;
  return z * z;
}
int arr[300005];
vector<pair<int, int> > v[300005];
vector<int> ans;
int vis[300005];
int dfs(int u) {
  vis[u] = 1;
  int cnt = 0;
  for (int i = 0; i < v[u].size(); i++) {
    int x = v[u][i].first;
    if (vis[x] == 0) {
      if (dfs(x)) {
        ans.push_back(v[u][i].second);
        cnt++;
      }
    }
  }
  if (cnt % 2 == arr[u]) return 0;
  if (arr[u] == -1) return 0;
  return 1;
}
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  int x = -1, cnt = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &arr[i]);
    if (arr[i] == -1) x = i;
    if (arr[i] == 1) cnt++;
  }
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    v[a].push_back(make_pair(b, i + 1));
    v[b].push_back(make_pair(a, i + 1));
  }
  if (x == -1 && cnt % 2) {
    printf("%d\n", -1);
    return 0;
  }
  if (x != -1) {
    dfs(x);
  } else
    dfs(1);
  printf("%d\n", ans.size());
  for (int i = 0; i < ans.size(); i++) printf("%d\n", ans[i]);
}
