func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100005;   vector<int> g[N], ans;   bool vis[N];   int x[N];   void Set(int u) {     x[u] ^= 1;     ans.push_back(u);   }   void dfs(int u) {     Set(u);     vis[u] = 1;     for (int i = 0; i < g[u].size(); ++i) {       int v = g[u][i];       if (vis[v]) continue;       dfs(v);       Set(u);       if (x[v]) {         Set(v);         Set(u);       }     }   }   int main() {     int n, m, u, v, r = 0;     scanf( %d%d , &n, &m);     for (int i = 1; i <= m; ++i) {       scanf( %d%d , &u, &v);       g[u].push_back(v);       g[v].push_back(u);     }     for (int i = 1; i <= n; ++i) {       scanf( %d , &x[i]);       if (x[i]) r = i;     }     dfs(r);     int f = 0;     if (x[r]) x[r] = 0, f = 1;     bool ok = true;     for (int i = 1; i <= n; ++i)       if (x[i]) {         ok = false;         break;       }     if (!ok)       puts( -1 );     else {       printf( %d n , ans.size() - f);       for (int i = 0; i < ans.size() - f; ++i) printf( %d  , ans[i]);     }     return 0;   }   