#include <bits/stdc++.h>
using namespace std;
const int MAXA = 10005; // tool id <= 10000
const int MAXK = 20005; // k <= 20000
const int MAXN = 1005; // n <= 1000
int n, k;
int a[MAXK], nxt[MAXK];
int cur[MAXA];
long long ans = 0;
struct cmp {
bool operator()(int x, int y) const {
return cur[x] > cur[y];
}
};
priority_queue<int, vector<int>, cmp> g[MAXN]; // g[1..n]
void nhan(int i, int x){
if (i <= 0) return;
auto &q = g[i];
if ((int)q.size() == 2){
int y = q.top(); q.pop();
++ans; // move y down one level
nhan(i-1, y);
}
q.push(x);
}
void doi(int i, int x){
if (i <= 0) return;
auto &q = g[i];
bool ok = false;
if (!q.empty()){
if (q.top() == x) ok = true;
else{
int tmp = q.top(); q.pop();
if (!q.empty() && q.top() == x) ok = true;
q.push(tmp);
}
}
if (ok) return;
if ((int)q.size() == 2){
int y = q.top(); q.pop();
++ans; // move y down one level
nhan(i-1, y);
}
doi(i-1, x);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
if (!(cin >> n >> k)) return 0;
for (int i = 1; i <= k; ++i) cin >> a[i];
// init cur: no next occurrence => k+1
for (int v = 0; v < MAXA; ++v) cur[v] = k + 1;
// compute nxt[i] (next occurrence index) by scanning backwards
for (int i = k; i >= 1; --i){
nxt[i] = cur[a[i]];
cur[a[i]] = i;
}
// process sequence: for each i, try to ensure a[i] at level n, then update cur[a[i]] = nxt[i]
for (int i = 1; i <= k; ++i){
doi(n, a[i]);
cur[a[i]] = nxt[i];
}
cout << ans * 2 << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYQSA9IDEwMDA1OyAgIC8vIHRvb2wgaWQgPD0gMTAwMDAKY29uc3QgaW50IE1BWEsgPSAyMDAwNTsgICAvLyBrIDw9IDIwMDAwCmNvbnN0IGludCBNQVhOID0gMTAwNTsgICAgLy8gbiA8PSAxMDAwCgppbnQgbiwgazsKaW50IGFbTUFYS10sIG54dFtNQVhLXTsKaW50IGN1cltNQVhBXTsKbG9uZyBsb25nIGFucyA9IDA7CgpzdHJ1Y3QgY21wIHsKICAgIGJvb2wgb3BlcmF0b3IoKShpbnQgeCwgaW50IHkpIGNvbnN0IHsKICAgICAgICByZXR1cm4gY3VyW3hdID4gY3VyW3ldOwogICAgfQp9OwoKcHJpb3JpdHlfcXVldWU8aW50LCB2ZWN0b3I8aW50PiwgY21wPiBnW01BWE5dOyAvLyBnWzEuLm5dCgp2b2lkIG5oYW4oaW50IGksIGludCB4KXsKICAgIGlmIChpIDw9IDApIHJldHVybjsKICAgIGF1dG8gJnEgPSBnW2ldOwogICAgaWYgKChpbnQpcS5zaXplKCkgPT0gMil7CiAgICAgICAgaW50IHkgPSBxLnRvcCgpOyBxLnBvcCgpOwogICAgICAgICsrYW5zOyAgICAgICAgICAgICAgIC8vIG1vdmUgeSBkb3duIG9uZSBsZXZlbAogICAgICAgIG5oYW4oaS0xLCB5KTsKICAgIH0KICAgIHEucHVzaCh4KTsKfQoKdm9pZCBkb2koaW50IGksIGludCB4KXsKICAgIGlmIChpIDw9IDApIHJldHVybjsKICAgIGF1dG8gJnEgPSBnW2ldOwogICAgYm9vbCBvayA9IGZhbHNlOwogICAgaWYgKCFxLmVtcHR5KCkpewogICAgICAgIGlmIChxLnRvcCgpID09IHgpIG9rID0gdHJ1ZTsKICAgICAgICBlbHNlewogICAgICAgICAgICBpbnQgdG1wID0gcS50b3AoKTsgcS5wb3AoKTsKICAgICAgICAgICAgaWYgKCFxLmVtcHR5KCkgJiYgcS50b3AoKSA9PSB4KSBvayA9IHRydWU7CiAgICAgICAgICAgIHEucHVzaCh0bXApOwogICAgICAgIH0KICAgIH0KICAgIGlmIChvaykgcmV0dXJuOwogICAgaWYgKChpbnQpcS5zaXplKCkgPT0gMil7CiAgICAgICAgaW50IHkgPSBxLnRvcCgpOyBxLnBvcCgpOwogICAgICAgICsrYW5zOyAgICAgICAgICAgICAgIC8vIG1vdmUgeSBkb3duIG9uZSBsZXZlbAogICAgICAgIG5oYW4oaS0xLCB5KTsKICAgIH0KICAgIGRvaShpLTEsIHgpOwp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGlmICghKGNpbiA+PiBuID4+IGspKSByZXR1cm4gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGs7ICsraSkgY2luID4+IGFbaV07CiAgICAvLyBpbml0IGN1cjogbm8gbmV4dCBvY2N1cnJlbmNlID0+IGsrMQogICAgZm9yIChpbnQgdiA9IDA7IHYgPCBNQVhBOyArK3YpIGN1clt2XSA9IGsgKyAxOwogICAgLy8gY29tcHV0ZSBueHRbaV0gKG5leHQgb2NjdXJyZW5jZSBpbmRleCkgYnkgc2Nhbm5pbmcgYmFja3dhcmRzCiAgICBmb3IgKGludCBpID0gazsgaSA+PSAxOyAtLWkpewogICAgICAgIG54dFtpXSA9IGN1clthW2ldXTsKICAgICAgICBjdXJbYVtpXV0gPSBpOwogICAgfQogICAgLy8gcHJvY2VzcyBzZXF1ZW5jZTogZm9yIGVhY2ggaSwgdHJ5IHRvIGVuc3VyZSBhW2ldIGF0IGxldmVsIG4sIHRoZW4gdXBkYXRlIGN1clthW2ldXSA9IG54dFtpXQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gazsgKytpKXsKICAgICAgICBkb2kobiwgYVtpXSk7CiAgICAgICAgY3VyW2FbaV1dID0gbnh0W2ldOwogICAgfQogICAgY291dCA8PCBhbnMgKiAyIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQo=