#include <iostream>
#include <vector>
#include <utility>
#include <stack>
 
using namespace std;
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    int n, m;
    if (!(cin >> n >> m)) return 0;
    vector<int> s(n+1);
    for (int i = 1; i <= n; ++i) cin >> s[i];
    vector<vector<pair<int,int>>> adj(n+1);
    vector<int> xu(m+1), yu(m+1);
    for (int i = 1; i <= m; ++i) {
        int x, y; cin >> x >> y;
        xu[i] = x; yu[i] = y;
        adj[x].push_back({y, i});
        adj[y].push_back({x, i});
    }
 
    vector<int> d(n+1);
    for (int i = 1; i <= n; ++i) d[i] = 1 - s[i];
 
    vector<int> vis(n+1, 0), parent(n+1, 0), parentEdge(n+1, 0);
    vector<int> ans; ans.reserve(m);
 
    for (int i = 1; i <= n; ++i) {
        if (vis[i]) continue;
        vector<int> st;
        vector<int> order;
        st.push_back(i);
        vis[i] = 1;
        parent[i] = 0;
        parentEdge[i] = 0;
        while (!st.empty()) {
            int u = st.back();
            st.pop_back();
            order.push_back(u);
            for (auto pr : adj[u]) {
                int v = pr.first, eid = pr.second;
                if (!vis[v]) {
                    vis[v] = 1;
                    parent[v] = u;
                    parentEdge[v] = eid;
                    st.push_back(v);
                }
            }
        }
        int sumd = 0;
        for (int v : order) sumd += d[v];
        if (sumd % 2 == 1) {
            cout << -1 << '\n';
            return 0;
        }
        for (int idx = (int)order.size() - 1; idx >= 0; --idx) {
            int u = order[idx];
            if (parent[u] == 0) continue;
            if (d[u] == 1) {
                ans.push_back(parentEdge[u]);
                d[u] ^= 1;
                d[parent[u]] ^= 1;
            }
        }
    }
 
    cout << ans.size() << '\n';
    for (size_t i = 0; i < ans.size(); ++i) {
        if (i) cout << ' ';
        cout << ans[i];
    }
    if (!ans.empty()) cout << '\n';
    return 0;
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHN0YWNrPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCiAgICBpbnQgbiwgbTsKICAgIGlmICghKGNpbiA+PiBuID4+IG0pKSByZXR1cm4gMDsKICAgIHZlY3RvcjxpbnQ+IHMobisxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgY2luID4+IHNbaV07CiAgICB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LGludD4+PiBhZGoobisxKTsKICAgIHZlY3RvcjxpbnQ+IHh1KG0rMSksIHl1KG0rMSk7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBtOyArK2kpIHsKICAgICAgICBpbnQgeCwgeTsgY2luID4+IHggPj4geTsKICAgICAgICB4dVtpXSA9IHg7IHl1W2ldID0geTsKICAgICAgICBhZGpbeF0ucHVzaF9iYWNrKHt5LCBpfSk7CiAgICAgICAgYWRqW3ldLnB1c2hfYmFjayh7eCwgaX0pOwogICAgfQoKICAgIHZlY3RvcjxpbnQ+IGQobisxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47ICsraSkgZFtpXSA9IDEgLSBzW2ldOwoKICAgIHZlY3RvcjxpbnQ+IHZpcyhuKzEsIDApLCBwYXJlbnQobisxLCAwKSwgcGFyZW50RWRnZShuKzEsIDApOwogICAgdmVjdG9yPGludD4gYW5zOyBhbnMucmVzZXJ2ZShtKTsKCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBpZiAodmlzW2ldKSBjb250aW51ZTsKICAgICAgICB2ZWN0b3I8aW50PiBzdDsKICAgICAgICB2ZWN0b3I8aW50PiBvcmRlcjsKICAgICAgICBzdC5wdXNoX2JhY2soaSk7CiAgICAgICAgdmlzW2ldID0gMTsKICAgICAgICBwYXJlbnRbaV0gPSAwOwogICAgICAgIHBhcmVudEVkZ2VbaV0gPSAwOwogICAgICAgIHdoaWxlICghc3QuZW1wdHkoKSkgewogICAgICAgICAgICBpbnQgdSA9IHN0LmJhY2soKTsKICAgICAgICAgICAgc3QucG9wX2JhY2soKTsKICAgICAgICAgICAgb3JkZXIucHVzaF9iYWNrKHUpOwogICAgICAgICAgICBmb3IgKGF1dG8gcHIgOiBhZGpbdV0pIHsKICAgICAgICAgICAgICAgIGludCB2ID0gcHIuZmlyc3QsIGVpZCA9IHByLnNlY29uZDsKICAgICAgICAgICAgICAgIGlmICghdmlzW3ZdKSB7CiAgICAgICAgICAgICAgICAgICAgdmlzW3ZdID0gMTsKICAgICAgICAgICAgICAgICAgICBwYXJlbnRbdl0gPSB1OwogICAgICAgICAgICAgICAgICAgIHBhcmVudEVkZ2Vbdl0gPSBlaWQ7CiAgICAgICAgICAgICAgICAgICAgc3QucHVzaF9iYWNrKHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGludCBzdW1kID0gMDsKICAgICAgICBmb3IgKGludCB2IDogb3JkZXIpIHN1bWQgKz0gZFt2XTsKICAgICAgICBpZiAoc3VtZCAlIDIgPT0gMSkgewogICAgICAgICAgICBjb3V0IDw8IC0xIDw8ICdcbic7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpZHggPSAoaW50KW9yZGVyLnNpemUoKSAtIDE7IGlkeCA+PSAwOyAtLWlkeCkgewogICAgICAgICAgICBpbnQgdSA9IG9yZGVyW2lkeF07CiAgICAgICAgICAgIGlmIChwYXJlbnRbdV0gPT0gMCkgY29udGludWU7CiAgICAgICAgICAgIGlmIChkW3VdID09IDEpIHsKICAgICAgICAgICAgICAgIGFucy5wdXNoX2JhY2socGFyZW50RWRnZVt1XSk7CiAgICAgICAgICAgICAgICBkW3VdIF49IDE7CiAgICAgICAgICAgICAgICBkW3BhcmVudFt1XV0gXj0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGFucy5zaXplKCkgPDwgJ1xuJzsKICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAgaWYgKGkpIGNvdXQgPDwgJyAnOwogICAgICAgIGNvdXQgPDwgYW5zW2ldOwogICAgfQogICAgaWYgKCFhbnMuZW1wdHkoKSkgY291dCA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0K