#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, m; cin >> n >> m; vector> fl(m); for (auto&& [u, v] : fl) cin >> u >> v; int q; cin >> q; vector> qs(q); for (auto&& [t, a, b] : qs) cin >> t >> a >> b; map priv; { int idx = 0; for (auto [t, a, b] : qs) if (t == 2 && !priv.contains(a)) priv[a] = idx++; } vector> fls(priv.size()); vector curpriv(priv.size(), false); for (auto&& [u, v] : fl) if (priv.contains(v)) fls[priv[v]].insert(u); for (auto [k, v] : priv) fls[v].insert(k); for (auto [t, a, b] : qs) { if (t == 1 && priv.contains(b)) { if (fls[priv[b]].contains(a)) fls[priv[b]].erase(a); else fls[priv[b]].insert(a); } if (t == 2) { curpriv[priv[a]] = !curpriv[priv[a]]; } int ans = n - 1; rep(i, priv.size()) if (curpriv[i] && !fls[i].contains(a)) ans--; cout << ans << '\n'; } return 0; }