#include <fstream>
using namespace std;
ifstream cin("damesah.in");
ofstream cout("damesah.out");
int main()
{
int n,m,i,j,k=0,atacmax=-1,im,jm,atac;
cin>>n>>m;
int a[n+2][n+2];
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
a[i][j]=0;
}
}
for(i=1;i<=m;i++)
{
cin>>im>>jm;
a[im][jm]=1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(a[i][j]==1)
{
atac=0;
for(im=i+1;im<=n;im++)
{
if(a[im][j]==1){atac++;break;}
}
for(im=i-1;im>=1;im--)
{
if(a[im][j]==1){atac++;break;}
}
for(jm=j+1;jm<=n;jm++)
{
if(a[i][jm]==1){atac++;break;}
}
for(jm=j-1;jm>=1;jm--)
{
if(a[i][jm]==1){atac++;break;}
}
jm=j;
for(im=i+1;im<=n;im++)
{
jm++;
if(jm<=n && a[im][jm]==1){atac++;break;}
}
jm=j;
for(im=i-1;im>=1;im--)
{
jm--;
if(jm>=1 && a[im][jm]==1){atac++;break;}
}
jm=j;
for(im=i+1;im<=n;im++)
{
jm--;
if(jm>=1 && a[im][jm]==1){atac++;break;}
}
jm=j;
for(im=i-1;im>=1;im--)
{
jm++;
if(jm<=n && a[im][jm]==1){atac++;break;}
}
if(atac>atacmax){atacmax=atac;k=0;}
if(atac==atacmax){k++;}
}
}
}
cout<<atacmax<<" "<<k;
return 0;
}