signedmain(){ int n, m; cin >> m >> n; MaxFlow maxflow(n + 5); int s = n + 1; int t = n + 2; for(int i = 1; i <= m; i++){ maxflow.add(s, i, 1); } for(int i = m + 1; i <= n; i++){ maxflow.add(i, t, 1); } int u, v; while(cin >> u >> v){ if(u == -1 && v == -1)break; maxflow.add(u, v, 1); } ll ans = maxflow.dinic(s, t); cout << ans << endl; for(int u = 1; u <= m; u++){ for(auto [w, v, id] : maxflow.E[u]){ if(w == 0 && v != s && v != t){ cout << u << " " << v << endl; } } }