Alice and Bob don't play games anymore. Now they study properties of all sorts of graphs together. Alice invented the following task: she takes a complete undirected graph with *n* vertices, chooses some *m* edges and keeps them. Bob gets the <img align="middle" class="tex-formula" src="https://espresso.codeforces.com/c71c71c3cae00d164d378e95345e36e760a9a0dc.png" style="max-width: 100.0%;max-height: 100.0%;"/> remaining edges.

Alice and Bob are fond of "triangles" in graphs, that is, cycles of length 3. That's why they wonder: what total number of triangles is there in the two graphs formed by Alice and Bob's edges, correspondingly?
The first line contains two space-separated integers *n* and *m* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>, 0 ≤ *m* ≤ 10<sup class="upper-index">6</sup>) — the number of vertices in the initial complete graph and the number of edges in Alice's graph, correspondingly. Then *m* lines follow: the *i*-th line contains two space-separated integers *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub>, *b*<sub class="lower-index">*i*</sub> ≤ *n*, *a*<sub class="lower-index">*i*</sub> ≠ *b*<sub class="lower-index">*i*</sub>), — the numbers of the two vertices connected by the *i*-th edge in Alice's graph. It is guaranteed that Alice's graph contains no multiple edges and self-loops. It is guaranteed that the initial complete graph also contains no multiple edges and self-loops.

Consider the graph vertices to be indexed in some way from 1 to *n*.
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define mp make_pair
#define pb push_back
#define pii pair <int, int>

const int MOD = 1000000007;

const ll MAX = 2005;

#define read1(a) int a; scanf("%d", &a)
#define read2(a, b) int a, b; scanf("%d %d", &a, &b)
#define read3(a, b, c) int a, b, c; scanf("%d %d %d", &a, &b, &c)

#define FOR(i, a, b) for (int i=a; i<b; i++)
#define F0R(i, a) for (int i=0; i<a; i++)

#define readgi(n) F0R(i, n) { scanf("%d", &arr[i]); arr[i] %= y; }
#define readgs(n) F0R(i, n) { scanf("%c", &arr[i]); }

#define f first
#define s second

int x[1000005];

int main() {
    read2(n, m);
    ll k = n;
    F0R(i, m) {
        read2(a, b); x[a]++; x[b]++;
    }

    ll sumx = 0;
    FOR(i, 1, n+1) {
        sumx += (x[i]) * (n-1-x[i]);
    }
    cout << k * (k-1) * (k-2) / 6 - sumx / 2;
}
