#include <cstdio>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
const int maxn=110;
struct node{
int parent;
vector<int> child;
}id[maxn];
int nodetable[maxn]={0};
void DFS(int index,int depth){
nodetable[depth]++;// depthe层结点数+1
for(int i=0; i<id[index].child.size();i++){
DFS(id[index].child[i], depth+1);
}
}
int main(){
int m,n;
int temp,parent,k;
scanf("%d %d",&m,&n);
for(int i=0;i<n;i++){
scanf("%d %d",&parent,&k);
for(int j=0;j<k;j++){
scanf("%d",&temp);
id[parent].child.push_back(temp);
}
}
DFS(1, 1);
int maxLevel=-1;
int maxValue=0;
for(int i=0;i<maxn;i++){
if(nodetable[i]>maxValue){
maxValue=nodetable[i];
maxLevel=i;
}
}
printf("%d %d\n",maxValue,maxLevel);
return 0;
}