// #include #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include using namespace std; using ll = long long; constexpr ll inf = (1LL << 61); ll dx[8] = {0, 1, 0, -1, 1, -1, -1, 1}; ll dy[8] = {-1, 0, 1, 0, 1, 1, -1, -1}; #define rep(i, n) for (ll i = 0; i < (ll)(n); ++i) #define REP(i, init, n) for (ll i = (ll)init; i < (ll)(n); ++i) int main() { ios::sync_with_stdio(false); std::cin.tie(nullptr); ll n, m; cin >> n >> m; unordered_map> fw; rep(i, m) { ll u, v; cin >> u >> v; u--, v--; fw[v].insert(u); } ll disc = n; unordered_set cl; ll q; cin >> q; while (q--) { ll op, a, b; cin >> op >> a >> b; a--, b--; if (op == 1) { if (fw[b].find(a) != fw[b].end()) { fw[b].erase(a); } else { fw[b].insert(a); } } else { if (cl.find(a) != cl.end()) { cl.erase(a); ++disc; } else { cl.insert(a); --disc; } } ll ans = disc; for (auto& x : cl) { if (fw[x].find(a) != fw[x].end()) { ++ans; } } if (cl.find(a) == cl.end()) { --ans; } cout << ans << "\n"; } }