#include <cstdio>
#include <vector>
using namespace std;
int main() {
int N,D;
scanf(" %d %d",&N,&D);
vector<int> pocty(N,0); // kolko krat som danu bazu videl v mojom podretazci
vector<int> post(D);
int i =0,j =0; // lavy, pravy koniec podretazca
long long odp =0LL;
* int nemam =N; // kolko baz som este nevidel
while(j < D) {
scanf(" %d",&post[j]);
pocty[post[j]-1]++;
* if(pocty[post[j]-1] == 1) nemam--; // tot nova baza na vstupe
j++;
if(nemam > 0) continue; // este nemam od zaciatku po pravy koniec vsetky bazy
while(i < j) {
// posuvaj lavy okraj dalej kym mozes
pocty[post[i]-1]--;
i++;
if(pocty[post[i-1]-1] == 0) {
i--;
pocty[post[i]-1]++;
break;}}
odp +=(long long)(i+1);}
printf("%lld\n",odp); // trololo
return 0;}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHZlY3Rvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJaW50IE4sRDsKCXNjYW5mKCIgJWQgJWQiLCZOLCZEKTsKCXZlY3RvcjxpbnQ+IHBvY3R5KE4sMCk7IC8vIGtvbGtvIGtyYXQgc29tIGRhbnUgYmF6dSB2aWRlbCB2IG1vam9tIHBvZHJldGF6Y2kKCXZlY3RvcjxpbnQ+IHBvc3QoRCk7CglpbnQgaSA9MCxqID0wOyAvLyBsYXZ5LCBwcmF2eSBrb25pZWMgcG9kcmV0YXpjYQoJbG9uZyBsb25nIG9kcCA9MExMOwoqCWludCBuZW1hbSA9TjsgLy8ga29sa28gYmF6IHNvbSBlc3RlIG5ldmlkZWwKCXdoaWxlKGogPCBEKSB7CgkJc2NhbmYoIiAlZCIsJnBvc3Rbal0pOwoJCXBvY3R5W3Bvc3Rbal0tMV0rKzsKKgkJaWYocG9jdHlbcG9zdFtqXS0xXSA9PSAxKSBuZW1hbS0tOyAvLyB0b3Qgbm92YSBiYXphIG5hIHZzdHVwZQoJCWorKzsKCQlpZihuZW1hbSA+IDApIGNvbnRpbnVlOyAvLyBlc3RlIG5lbWFtIG9kIHphY2lhdGt1IHBvIHByYXZ5IGtvbmllYyB2c2V0a3kgYmF6eQoJCXdoaWxlKGkgPCBqKSB7CgkJCS8vIHBvc3V2YWogbGF2eSBva3JhaiBkYWxlaiBreW0gbW96ZXMKCQkJcG9jdHlbcG9zdFtpXS0xXS0tOwoJCQlpKys7CgkJCWlmKHBvY3R5W3Bvc3RbaS0xXS0xXSA9PSAwKSB7CgkJCQlpLS07CgkJCQlwb2N0eVtwb3N0W2ldLTFdKys7CgkJCQlicmVhazt9fQoJCW9kcCArPShsb25nIGxvbmcpKGkrMSk7fQoJcHJpbnRmKCIlbGxkXG4iLG9kcCk7IC8vIHRyb2xvbG8KCXJldHVybiAwO30K