#include using namespace std; typedef long long int ll; #define maxn 1000006 bool mark[maxn]; ll isprime[maxn],psize=0,M[maxn],mu[maxn]; void sieve() { mark[0]=true; mark[1]=true; for(ll i=2;i*i<=maxn;i++) { if(mark[i]==false) { for(ll j=i*i;j<=maxn;j+=i) mark[j]=true; } } for(ll i=2;i<=maxn;i++) { if(mark[i]==false) isprime[psize++]=i; } } ll primefact(ll x) { ll i,j,k,a,b,c,d,e,cnt=0,n=x; for(i=0;i<=psize && isprime[i]*isprime[i]<=n;i++) { if(n%isprime[i]==0) { cnt++; if(n%(isprime[i]*isprime[i])==0) { cnt=-1000; break; } n/=isprime[i]; } } if(n!=1) cnt++; return cnt; } void save() { ll cnt=0,i,j,k; M[1]=1,mu[1]=1; for(i=2;i<=1000000;i++) { ll cnt=primefact(i); if(cnt<0) mu[i]=0; else if(cnt%2==0) mu[i]=1; else mu[i]=-1; M[i]=M[i-1]+mu[i]; } } int main() { sieve(); save(); ll n; while(cin>>n && n) { printf("%8lld%8lld%8lld\n",n,mu[n],M[n]); } return 0; }