#include <iostream>
using namespace std;
int n,a[20],x[20][20],y[20][20],ans = 0;
bool vis[20];
bool check()
{
for(int i = 1;i <= n;i++)
{
if(vis[i])
{
for(int j = 1;j <= a[i];j++)
{
if(vis[x[i][j]] != y[i][j])
return 0;
}
}
}
return 1;
}
void dfs(int step = 1,int cnt = 0)
{
if(step > n)
{
if(check())
{
ans = max(ans,cnt);
}
return;
}
vis[step] = 1;
dfs(step + 1,cnt+1);
vis[step] = 0;
dfs(step + 1,cnt+1);
}
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();
cout<<ans;
return 0;
}