/*
拓扑排序裸题
*/
#include<cstdio>
#define maxn 10001
using namespace std;
int n,m,a[maxn][maxn],rd[maxn],ans;
void topo()
{
int i,j,k;
for(i=1;i<=n;i++)//2重循环确保没有遗漏
for(j=1;j<=n;j++)
if(rd[j]==0)//找入度为零的点
{
rd[j]--;
for(k=1;k<=n;k++)将点j连的边的入度减一
if(a[j][k])
rd[k]--;
break;
}
}
int main()
{
int i,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x][y]=1;
rd[y]++;
}
topo();
for(i=1;i<=n;i++)//找入度不为零的点
if(rd[i]>0)
ans++;
if(ans)
printf("T_T\n%d",ans);
else
printf("o(∩_∩)o");
return 0;
}