#include <bits/stdc++.h>
#define debug cout << "ok\n";
#define SQR(x) (1LL * ((x) * (x)))
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
#define fi first
#define se second
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define pli pair<ll,int>
#define vi vector<int>
#define FAST ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int ui;
using namespace std;
const int M = 1e9 + 7;
const int INF = 1e9 + 7;
const ll INFLL = (ll)2e18 + 7LL;
const ld PI = acos(-1);
const int dx[] = {1, -1, 0, 0, -1, 1, 1, -1};
const int dy[] = {0, 0, 1, -1, -1, -1, 1, 1};
template<class _, class __>
bool minimize(_ &x, const __ y){
if(x > y){
x = y;
return true;
} else return false;
}
template<class _, class __>
bool maximize(_ &x, const __ y){
if(x < y){
x = y;
return true;
} else return false;
}
template<class _,class __>
void Add(_ &x, const __ y) {
x += y;
if (x >= M) {
x -= M;
}
return;
}
template<class _,class __>
void Diff(_ &x, const __ y) {
x -= y;
if (x < 0) {
x += M;
}
return;
}
//--------------------------------------------------------------
const int MaxN = 1e6+7;
int n,m,a[MaxN];
namespace sub1 {
bool check() {
return n <= 500;
}
bool _ch(int a,int b) {
if (a > b) b += n;
return (b - a)*2 < n;
}
bool ch(int a,int b,int c) {
if (_ch(a,b) && _ch(b,c) && _ch(c,a)) return true;
}
void sol() {
int res = 0;
for (int i=1;i<=m;i++) {
for (int j=i+1;j<=m;j++) {
for (int k=j+1;k<=m;k++) {
res += ch(a[i],a[j],a[k]);
// if (ch(a[i],a[j],a[k])) cout << a[i] << ' ' << a[j] << ' ' << a[k] << '\n';
}
}
}
cout << res;
}
}
namespace sub2 {
bool check() {
return n <= 5000;
}
int sum[10007];
bool ch[10007];
void sol() {
for (int i=1;i<=m;i++) {
for (int j=0;j<=1;j++) {
sum[a[i] + j*n]++;
ch[a[i] + j*n] = true;
}
}
for (int i=1;i<=2*n;i++) sum[i] += sum[i-1];
ll res = 0;
for (int i=1;i<=n;i++) {
for (int j=1;2*j < n;j++) {
int k = i + j;
if (!ch[i] || !ch[k]) continue;
int l = i + n/2 + 1;
int r = k + (n+1)/2 - 1;
if (l <= r) {
res += sum[r] - sum[l-1];
}
}
}
cout << res/3;
}
}
namespace sub3 {
bool check() {
return n == m;
}
ll C(int n,int k) {
ll res = 1;
for (int i=n-k+1;i<=n;i++) res *= i;
for (int i=1;i<=k;i++) res /= i;
return res;
}
void sol() {
ll res = C(n,3);
res -= 1LL*n*C(n/2,2);
cout << res;
}
}
namespace sub4 {
bool check() {
return true;
}
int sum[MaxN*2];
bool ch[MaxN*2];
ll C(int n,int k) {
ll res = 1;
for (int i=n-k+1;i<=n;i++) res *= i;
for (int i=1;i<=k;i++) res /= i;
return res;
}
void sol() {
for (int i=1;i<=m;i++) {
for (int j=0;j<=1;j++) {
sum[a[i] + j*n]++;
ch[a[i] + j*n] = true;
}
}
for (int i=1;i<=2*n;i++) sum[i] += sum[i-1];
ll res = 0;
for (int i=1;i<=n;i++) {
if (!ch[i]) continue;
int r = i + n - 1;
int l = i + (n+1)/2;
res += C(sum[r] - sum[l-1],2);
}
res = C(m,3) - res;
cout << res;
}
}
void sol() {
cin >> n >> m;
for (int i=1;i<=m;i++) {
cin >> a[i];
}
sort(a+1,a+m+1);
if (sub1::check()) {
sub1::sol();
return;
}
if (sub2::check()) {
sub2::sol();
return;
}
if (sub3::check()) {
sub3::sol();
return;
}
if (sub4::check()) {
sub4::sol();
return;
}
}
int main() {
freopen("TRI.INP","r",stdin);
freopen("TRI.OUT","w",stdout);
FAST
int t=1;
// cin >> t;
while (t--) sol();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGRlYnVnICAgICBjb3V0IDw8ICJva1xuIjsKI2RlZmluZSBTUVIoeCkgICAgKDFMTCAqICgoeCkgKiAoeCkpKQojZGVmaW5lIE1BU0soaSkgICAoMUxMIDw8IChpKSkKI2RlZmluZSBCSVQoeCwgaSkgKCgoeCkgPj4gKGkpKSAmIDEpCiNkZWZpbmUgZmkgICAgICAgIGZpcnN0CiNkZWZpbmUgc2UgICAgICAgIHNlY29uZAojZGVmaW5lIHBiICAgICAgICBwdXNoX2JhY2sKCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBwbGkgcGFpcjxsbCxpbnQ+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KCiNkZWZpbmUgRkFTVCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1aTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTSA9IDFlOSArIDc7CmNvbnN0IGludCBJTkYgPSAxZTkgKyA3Owpjb25zdCBsbCBJTkZMTCA9IChsbCkyZTE4ICsgN0xMOwpjb25zdCBsZCBQSSA9IGFjb3MoLTEpOwoKY29uc3QgaW50IGR4W10gPSB7MSwgLTEsIDAsIDAsIC0xLCAxLCAxLCAtMX07CmNvbnN0IGludCBkeVtdID0gezAsIDAsIDEsIC0xLCAtMSwgLTEsIDEsIDF9OwoKdGVtcGxhdGU8Y2xhc3MgXywgY2xhc3MgX18+CiAgICBib29sIG1pbmltaXplKF8gJngsIGNvbnN0IF9fIHkpewogICAgICAgIGlmKHggPiB5KXsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gZWxzZSByZXR1cm4gZmFsc2U7CiAgICB9CnRlbXBsYXRlPGNsYXNzIF8sIGNsYXNzIF9fPgogICAgYm9vbCBtYXhpbWl6ZShfICZ4LCBjb25zdCBfXyB5KXsKICAgICAgICBpZih4IDwgeSl7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgXyxjbGFzcyBfXz4KICAgIHZvaWQgQWRkKF8gJngsIGNvbnN0IF9fIHkpIHsKICAgICAgICB4ICs9IHk7CiAgICAgICAgaWYgKHggPj0gTSkgewogICAgICAgICAgICB4IC09IE07CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCnRlbXBsYXRlPGNsYXNzIF8sY2xhc3MgX18+CiAgICB2b2lkIERpZmYoXyAmeCwgY29uc3QgX18geSkgewogICAgICAgIHggLT0geTsKICAgICAgICBpZiAoeCA8IDApIHsKICAgICAgICAgICAgeCArPSBNOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpjb25zdCBpbnQgTWF4TiA9IDFlNis3OwoKaW50IG4sbSxhW01heE5dOwoKbmFtZXNwYWNlIHN1YjEgewogICAgYm9vbCBjaGVjaygpIHsKICAgICAgICByZXR1cm4gbiA8PSA1MDA7CiAgICB9CgogICAgYm9vbCBfY2goaW50IGEsaW50IGIpIHsKICAgICAgICBpZiAoYSA+IGIpIGIgKz0gbjsKICAgICAgICByZXR1cm4gKGIgLSBhKSoyIDwgbjsKICAgIH0KCiAgICBib29sIGNoKGludCBhLGludCBiLGludCBjKSB7CiAgICAgICAgaWYgKF9jaChhLGIpICYmIF9jaChiLGMpICYmIF9jaChjLGEpKSByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICB2b2lkIHNvbCgpIHsKICAgICAgICBpbnQgcmVzID0gMDsKICAgICAgICBmb3IgKGludCBpPTE7aTw9bTtpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaj1pKzE7ajw9bTtqKyspIHsKICAgICAgICAgICAgICAgIGZvciAoaW50IGs9aisxO2s8PW07aysrKSB7CiAgICAgICAgICAgICAgICAgICAgcmVzICs9IGNoKGFbaV0sYVtqXSxhW2tdKTsKLy8gICAgICAgICAgICAgICAgICAgIGlmIChjaChhW2ldLGFbal0sYVtrXSkpIGNvdXQgPDwgYVtpXSA8PCAnICcgPDwgYVtqXSA8PCAnICcgPDwgYVtrXSA8PCAnXG4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgcmVzOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViMiB7CiAgICBib29sIGNoZWNrKCkgewogICAgICAgIHJldHVybiBuIDw9IDUwMDA7CiAgICB9CgogICAgaW50IHN1bVsxMDAwN107CiAgICBib29sIGNoWzEwMDA3XTsKCiAgICB2b2lkIHNvbCgpIHsKICAgICAgICBmb3IgKGludCBpPTE7aTw9bTtpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaj0wO2o8PTE7aisrKSB7CiAgICAgICAgICAgICAgICBzdW1bYVtpXSArIGoqbl0rKzsKICAgICAgICAgICAgICAgIGNoW2FbaV0gKyBqKm5dID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpPTE7aTw9MipuO2krKykgc3VtW2ldICs9IHN1bVtpLTFdOwogICAgICAgIGxsIHJlcyA9IDA7CiAgICAgICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGo9MTsyKmogPCBuO2orKykgewogICAgICAgICAgICAgICAgaW50IGsgPSBpICsgajsKICAgICAgICAgICAgICAgIGlmICghY2hbaV0gfHwgIWNoW2tdKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGludCBsID0gaSArIG4vMiArIDE7CiAgICAgICAgICAgICAgICBpbnQgciA9IGsgKyAobisxKS8yIC0gMTsKICAgICAgICAgICAgICAgIGlmIChsIDw9IHIpIHsKICAgICAgICAgICAgICAgICAgICByZXMgKz0gc3VtW3JdIC0gc3VtW2wtMV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY291dCA8PCByZXMvMzsKICAgIH0KfQoKbmFtZXNwYWNlIHN1YjMgewogICAgYm9vbCBjaGVjaygpIHsKICAgICAgICByZXR1cm4gbiA9PSBtOwogICAgfQoKICAgIGxsIEMoaW50IG4saW50IGspIHsKICAgICAgICBsbCByZXMgPSAxOwogICAgICAgIGZvciAoaW50IGk9bi1rKzE7aTw9bjtpKyspIHJlcyAqPSBpOwogICAgICAgIGZvciAoaW50IGk9MTtpPD1rO2krKykgcmVzIC89IGk7CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICB2b2lkIHNvbCgpIHsKICAgICAgICBsbCByZXMgPSBDKG4sMyk7CiAgICAgICAgcmVzIC09IDFMTCpuKkMobi8yLDIpOwogICAgICAgIGNvdXQgPDwgcmVzOwogICAgfQp9CgpuYW1lc3BhY2Ugc3ViNCB7CiAgICBib29sIGNoZWNrKCkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGludCBzdW1bTWF4TioyXTsKICAgIGJvb2wgY2hbTWF4TioyXTsKCiAgICBsbCBDKGludCBuLGludCBrKSB7CiAgICAgICAgbGwgcmVzID0gMTsKICAgICAgICBmb3IgKGludCBpPW4taysxO2k8PW47aSsrKSByZXMgKj0gaTsKICAgICAgICBmb3IgKGludCBpPTE7aTw9aztpKyspIHJlcyAvPSBpOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CgogICAgdm9pZCBzb2woKSB7CiAgICAgICAgZm9yIChpbnQgaT0xO2k8PW07aSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGo9MDtqPD0xO2orKykgewogICAgICAgICAgICAgICAgc3VtW2FbaV0gKyBqKm5dKys7CiAgICAgICAgICAgICAgICBjaFthW2ldICsgaipuXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaT0xO2k8PTIqbjtpKyspIHN1bVtpXSArPSBzdW1baS0xXTsKICAgICAgICBsbCByZXMgPSAwOwogICAgICAgIGZvciAoaW50IGk9MTtpPD1uO2krKykgewogICAgICAgICAgICBpZiAoIWNoW2ldKSBjb250aW51ZTsKICAgICAgICAgICAgaW50IHIgPSBpICsgbiAtIDE7CiAgICAgICAgICAgIGludCBsID0gaSArIChuKzEpLzI7CiAgICAgICAgICAgIHJlcyArPSBDKHN1bVtyXSAtIHN1bVtsLTFdLDIpOwogICAgICAgIH0KICAgICAgICByZXMgPSBDKG0sMykgLSByZXM7CiAgICAgICAgY291dCA8PCByZXM7CiAgICB9Cn0KCnZvaWQgc29sKCkgewogICAgY2luID4+IG4gPj4gbTsKICAgIGZvciAoaW50IGk9MTtpPD1tO2krKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgc29ydChhKzEsYSttKzEpOwogICAgaWYgKHN1YjE6OmNoZWNrKCkpIHsKICAgICAgICBzdWIxOjpzb2woKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoc3ViMjo6Y2hlY2soKSkgewogICAgICAgIHN1YjI6OnNvbCgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmIChzdWIzOjpjaGVjaygpKSB7CiAgICAgICAgc3ViMzo6c29sKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKHN1YjQ6OmNoZWNrKCkpIHsKICAgICAgICBzdWI0Ojpzb2woKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCmludCBtYWluKCkgewoJZnJlb3BlbigiVFJJLklOUCIsInIiLHN0ZGluKTsKCWZyZW9wZW4oIlRSSS5PVVQiLCJ3IixzdGRvdXQpOwoJRkFTVAoJaW50IHQ9MTsKLy8JY2luID4+IHQ7Cgl3aGlsZSAodC0tKSBzb2woKTsKfQo=