#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<memory.h>
#include<set>
using namespace std;
int gcd( int a, int b)
{
if( b==0)
return a;
else
return gcd(b,a%b);
}
int main()
{
int i,j,k,n,count,ans;
int a,b,c,d;
bool flag[1000005];
while( cin>>n)
{
memset(flag,0,sizeof(flag));
count=0;
ans=0;
for( i=1; i*i<=n; i++)
{
for( j=i+1; i*i+j*j<=n; j++)
{
if( gcd(i,j)==1 && (i%2!=j%2)){
a=2*i*j;
b=(j*j-i*i);
c=(j*j+i*i);
if(c<=n){
count++;
int d=1;
while( c*d <=n)
{
flag[a*d]=1;
flag[b*d]=1;
flag[c*d]=1;
d++;
}
}
}
}
}
for(int k=1; k<=n; k++)
if(!flag[k])
ans++;
cout<<count<<" "<<ans<<endl;
}
}