#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
//抄博友程序 看博友好分析 二分图最大匹配 背
vector<int> G[10001];
int link[10001];
int vis[10001];
bool dfs(int x)
{
for(int i=0;i<G[x].size();i++)
{
int t=G[x][i];
if(vis[t]==0)
{
vis[t]=1;
if(link[t]==-1||dfs(link[t]))
{
link[t]=x;
return true;
}
}
}
return false;
}
int main()
{
int n;
while(cin>>n)
{
for(int i=0;i<10001;i++)
{
G[i].clear();
}
memset(link,-1,sizeof(link));
for(int i=0;i<n;i++)
{
int m;
cin>>m;
for(int j=0;j<m;j++)
{
int p,q;
cin>>p>>q;//抄博友程序 这n个课程在第p天的第q节上
G[i].push_back((p-1)*12+q);//(p-1)*7+q-1 我wa 抄博友程序 每周 7*12=84 节课
}
}
int ans=0;
for(int i=0;i<n;i++)//hungarian 匈牙利算法
{
memset(vis,0,sizeof(vis));
if(dfs(i))
{
ans++;
}
}
cout<<ans<<endl;
}
return 0;
}