#include<iostream>
#include<vector>
using namespace std;
vector<int>v[100];//邻接表,存储树结构
int book[100]={0};//记录每层节点数
//dfs,统计每层节点数
void dfs(int index,int level){
book[level]++;
for(int i=0;i<v[index].size();i++){//遍历此节点的左右子节点
dfs(v[index][i],level+1);//当全部遍历完此节点的子节点后,层数加1
}
}
int main(){
int n,m;
cin>>n>>m;
//读取树结构
for(int i=0;i<m;i++){
int parent,k;//父节点,子节点数
cin>>parent>>k;
for(int j=0;j<k;j++){
int child;
cin>>child;
v[parent].push_back(child);
}
}
dfs(1,1);//从根节点开始深度优先搜索,初始层数为1
int maxmun=0,maxlev=1;
for(int i=0;i<100;i++){
if(book[i]>maxmun){
maxmun=book[i];
maxlev=i;
}
}
cout<<maxmun<<" "<<maxlev<<endl;
return 0;
}