intread(){ int x = 0, f = 0; char c = gc(); while (!isdigit(c)) f |= c == '-', c = gc(); while (isdigit(c)) x = x * 10 + c - '0', c = gc(); return f ? -x : x; }
int n, m, a[maxn];
vector<int> b;
map<vector<int>, int> ma;
ll ans; intmain(){ n = read(); m = read(); for (int i = 1; i <= m; ++i) b.push_back(0); ma[b] = 1; for (int i = 1; i <= n; ++i) { a[i] = read(); if (a[i] == m) { for (int j = 1; j <= m; ++j) --b[j]; ans += ma[b]++; continue ; } b[a[i]]++; ans += ma[b]++; } cout << ans << endl; return0; }