#include <iostream>
#include <queue>
#include <string.h>
using namespace std;
struct E{
long long int t;
int from,to;
bool operator<(const E& e1)const{
return t>e1.t;
}
};
void f(int n,int m){
int memo[20003];
memset(memo,0,sizeof(memo));
memo[1]=1;
priority_queue<E> pq;
for(int i=0;i<m;i++){
E e1;
cin>>e1.t>>e1.from>>e1.to;
pq.push(e1);
}
while(pq.size()>0){
E e1=pq.top();
pq.pop();
if(memo[e1.from]==1)memo[e1.to]=1;
}
int ans=0;
for(int i=1;i<=n;i++){
ans+=memo[i];
}
cout<<ans<<endl;
}
int main() {
int n,m;
while(true){
cin>>n>>m;
if(n+m==0)break;
f(n,m);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdHJpbmcuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IEV7Cglsb25nIGxvbmcgaW50IHQ7CglpbnQgZnJvbSx0bzsKCWJvb2wgb3BlcmF0b3I8KGNvbnN0IEUmIGUxKWNvbnN0ewoJCXJldHVybiB0PmUxLnQ7Cgl9Cn07CnZvaWQgZihpbnQgbixpbnQgbSl7CglpbnQgbWVtb1syMDAwM107CgltZW1zZXQobWVtbywwLHNpemVvZihtZW1vKSk7CgltZW1vWzFdPTE7Cglwcmlvcml0eV9xdWV1ZTxFPiBwcTsKCWZvcihpbnQgaT0wO2k8bTtpKyspewoJCUUgZTE7CgkJY2luPj5lMS50Pj5lMS5mcm9tPj5lMS50bzsKCQlwcS5wdXNoKGUxKTsKCX0KCXdoaWxlKHBxLnNpemUoKT4wKXsKCQlFIGUxPXBxLnRvcCgpOwoJCXBxLnBvcCgpOwoJCWlmKG1lbW9bZTEuZnJvbV09PTEpbWVtb1tlMS50b109MTsKCX0KCWludCBhbnM9MDsKCWZvcihpbnQgaT0xO2k8PW47aSsrKXsKCQlhbnMrPW1lbW9baV07Cgl9Cgljb3V0PDxhbnM8PGVuZGw7Cn0KCgppbnQgbWFpbigpIHsKCWludCBuLG07Cgl3aGlsZSh0cnVlKXsKCQljaW4+Pm4+Pm07CgkJaWYobittPT0wKWJyZWFrOwoJCWYobixtKTsKCX0KCXJldHVybiAwOwp9