#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> solve(long long n, long long m,
                                 vector<long long> v) {
  long long wf = 0;
  long long ws = 0;
  for (long long s = 2; s <= 2 * m; s++) {
    vector<long long> w = v;
    for (long long i = 0; i < n; i++) {
      w[i] %= s;
    }
    sort(w.begin(), w.end());
    long long mina = max(1LL, s - m);
    long long maxa = s / 2;
    if (s % 2 == 0) {
      long long num = 0;
      for (long long i = 0; i < n; i++) {
        num += (w[i] >= (s / 2));
      }
      if (num % 2) {
        wf--;
      } else {
        ws--;
      }
    }
    {{long long i1 = mina;
    i1 = max(i1, w.back() + 1);
    long long i2 = s / 3;
    if (i1 <= i2) ws += 2 * (i2 - i1 + 1);
  }
  {
    long long i1 = mina;
    long long i2 = s / 3;
    if (w.size() > 1) i1 = max(i1, w[w.size() - 2] + 1);
    i1 = max(i1, s - w.back());
    if (i1 <= i2) wf += 2 * (i2 - i1 + 1);
  }
}
{
  {
    long long i1 = max(mina, s / 3 + 1);
    long long i2 = maxa;
    i2 = min(i2, w.back() / 2);
    if (w.size() > 1) i1 = max(i1, w[w.size() - 2] / 2 + 1);
    long long cnt = 0;
    for (long long a = 0; a + 1 < w.size(); a++) {
      long long z = w[a];
      if (z * 2 >= s) cnt++;
      if (z * 2 >= s) {
        i1 = max(i1, s - z);
      } else {
        i1 = max(i1, z + 1);
      }
    }
    if (i1 <= i2) {
      if (cnt % 2 == 0) {
        wf += 2 * (i2 - i1 + 1);
      }
    }
  }
  {
    long long i1 = max(mina, s / 3 + 1);
    long long i2 = maxa;
    i1 = max(i1, w.back() / 2 + 1);
    long long cnt = 0;
    for (long long a = 0; a < w.size(); a++) {
      long long z = w[a];
      if (z * 2 >= s) cnt++;
      if (z * 2 >= s) {
        i1 = max(i1, s - z);
      } else {
        i1 = max(i1, z + 1);
      }
    }
    if (i1 <= i2) {
      if (cnt % 2) {
        wf += 2 * (i2 - i1 + 1);
      } else {
        ws += 2 * (i2 - i1 + 1);
      }
    }
  }
}
}
return {wf, ws};
}
int main() {
  long long n, m;
  cin >> n >> m;
  vector<long long> v(n);
  for (long long i = 0; i < n; i++) {
    cin >> v[i];
  }
  pair<long long, long long> ans = solve(n, m, v);
  long long wf = ans.first;
  long long ws = ans.second;
  long long wa, wb;
  wa = wb = (m * m - wf - ws) / 2;
  cout << wa << " " << wb << " " << wf << " " << ws << endl;
}
