#include<iostream>
using namespace std;
int x[20][20] , y[20][20] , a[20] , ans=0 , bo[20] , n;
void dfs(int node , int sum)
{
	/*for(int i=1;i<=n;i++)
		cout<<bo[i]<<" ";
	cout<<endl;*/
	if(node==n+1)
	{
		bool OK=true;
		for(int i=1;i<=n;i++)
			if(bo[i]==1)
			{
				for(int j=1;j<=a[i];j++)
					if(bo[x[i][j]]!=y[i][j])
						OK=false;
			}
		/*if(sum==2){
			for(int i=1;i<=n;i++)
				cout<<bo[i]<<" ";
			cout<<endl;
		}*/
		if(OK) ans=max(sum , ans);
		return;
	}
	
	bo[node]=1;
	dfs(node+1 , sum+1);
	bo[node]=0;
	dfs(node+1 , sum);
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		for(int j=1;j<=a[i];j++)
			cin>>x[i][j]>>y[i][j];
	}
	dfs(1 , 0);
	cout<<ans<<endl;
}