#include using namespace std; const int N = 100010; int n, l[N], r[N], kol[N], mn[N], mx[N], ans; bool ok; void dfs(int p) { if (l[p] == -1) { kol[p] = 1; mn[p] = r[p]; mx[p] = r[p]; return; } dfs(l[p]); dfs(r[p]); mn[p] = min(mn[l[p]], mn[r[p]]); mx[p] = max(mx[l[p]], mx[r[p]]); kol[p] = kol[l[p]] + kol[r[p]]; if (kol[p] != mx[p] - mn[p] + 1) ok = false; if (mn[l[p]] > mn[r[p]]) ans++; } void solve() { cin >> n; for (int i = 0; i < n; i++) { cin >> l[i] >> r[i]; r[i]--; if (l[i] != -1) l[i]--; } ok = true; ans = 0; dfs(0); if (!ok) cout << "-1\n"; else cout << ans << "\n"; } int main() { cin.sync_with_stdio(0); int T; cin >> T; for (int i = 0; i < T; i++) solve(); return 0; }