#include <bits/stdc++.h>
using namespace std;
int a[111111], b[111111], c[111111], d[111111], e[111111], ans[111111], an[233];
bool cmp1(int i, int j) {
  if (a[i] != a[j]) return a[i] < a[j];
  return b[i] < b[j];
}
bool cmp2(int i, int j) {
  if (b[i] != b[j]) return b[i] < b[j];
  return a[i] < a[j];
}
bool cmp3(int i, int j) {
  if (c[i] != c[j]) return c[i] < c[j];
  return b[i] < b[j];
}
bool cmp4(int i, int j) {
  if (d[i] != d[j]) return d[i] < d[j];
  return b[i] < b[j];
}
int main() {
  int i, j, k, m, n;
  scanf("%d%d", &n, &m);
  for (i = 1; i <= m; i++) {
    scanf("%d%d", &a[i], &b[i]);
    c[i] = a[i] - b[i];
    d[i] = a[i] + b[i];
    e[i] = i;
  }
  sort(e + 1, e + m + 1, cmp1);
  for (i = 1; i <= m; i++) {
    if (i != 1 && a[e[i - 1]] == a[e[i]]) ans[e[i]]++;
    if (i != m && a[e[i + 1]] == a[e[i]]) ans[e[i]]++;
  }
  sort(e + 1, e + m + 1, cmp2);
  for (i = 1; i <= m; i++) {
    if (i != 1 && b[e[i - 1]] == b[e[i]]) ans[e[i]]++;
    if (i != m && b[e[i + 1]] == b[e[i]]) ans[e[i]]++;
  }
  sort(e + 1, e + m + 1, cmp3);
  for (i = 1; i <= m; i++) {
    if (i != 1 && c[e[i - 1]] == c[e[i]]) ans[e[i]]++;
    if (i != m && c[e[i + 1]] == c[e[i]]) ans[e[i]]++;
  }
  sort(e + 1, e + m + 1, cmp4);
  for (i = 1; i <= m; i++) {
    if (i != 1 && d[e[i - 1]] == d[e[i]]) ans[e[i]]++;
    if (i != m && d[e[i + 1]] == d[e[i]]) ans[e[i]]++;
  }
  memset(an, 0, sizeof(an));
  for (i = 1; i <= m; i++) {
    an[ans[i]]++;
  }
  for (i = 0; i <= 8; i++) {
    printf("%d ", an[i]);
  }
  printf("\n");
  return 0;
}
