#include<bits/stdc++.h>
using namespace std;
int n,m;
int s1[40010],s2[40010],s3[40010],s4[40010];
struct node{
int id,w;
}f[40010];
bool cmp(node a,node b)
{
return a.w<b.w;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
scanf("%d",&f[i].w);
f[i].id=i;//sort之后会打乱下标,保存原下标
}
sort(f+1,f+1+m,cmp);//升序排,就可以按照+1枚举了
for(int a=1;a<=m;a++)//A物品
{
for(int b=a+1;b<=m;b++)//B物品
{
for(int c=b+1;c<=m;c++)//C物品
{
for(int d=c+1;d<=m;d++)//D物品
{
if(f[b].w-f[a].w==2*(f[d].w-f[c].w)&&3*(f[b].w-f[a].w)<f[c].w-f[b].w)
{
s1[f[a].id]++;
s2[f[b].id]++;
s3[f[c].id]++;
s4[f[d].id]++;
}
}
}
}
}
for(int i=1;i<=m;i++)
{
printf("%d %d %d %d\n",s1[i],s2[i],s3[i],s4[i]);
}
return 0;
}