func_code_string: #include <bits/stdc++.h>   using namespace std;   bool seen[100005], x[100005];   vector<int> g[100005], ans;   inline void add(int u) { ans.push_back(u + 1), x[u] ^= 1; }   void dfs(int u, int p) {     seen[u] = true;     add(u);     for (auto v : g[u])       if (v != p && !seen[v]) dfs(v, u), add(u);     if (x[u]) {       if (p != -1)         add(p), add(u);       else         x[u] = 0, ans.pop_back();     }   }   int main() {     int n, m;     scanf( %d%d , &n, &m);     for (auto i = (0); i < m; i++) {       int u, v;       scanf( %d%d , &u, &v);       u--, v--;       g[u].push_back(v), g[v].push_back(u);     }     for (auto i = (0); i < n; i++) scanf( %d , x + i);     for (auto i = (0); i < n; i++)       if (x[i]) {         dfs(i, -1);         break;       }     for (auto i = (0); i < n; i++)       if (x[i]) {         printf( -1 );         return 0;       }     printf( %d n , ans.size());     for (auto u : ans) printf( %d  , u);     return 0;   }   