#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5+5;
int n, a[N], last[N], pos[N];
int bit[N];
void update(int p, int v) {
for (; p <= n; p += p & -p)
bit[p] += v;
}
int get(int p) {
int s = 0;
for (; p > 0; p -= p & -p)
s += bit[p];
return s;
}
int query(int l, int r) {
if (l > r) return 0;
return get(r) - get(l - 1);
}
void solve() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= n; i++) {
last[i] = pos[a[i]];
pos[a[i]] = i;
}
ll ans = 0;
for (int r = 1; r <= n; r++) {
if (last[r]) update(last[r], -1); // Xóa lần xuất hiện trước đó
update(r, 1);
ans += query(last[r] + 1, r - 1); // Đếm số vị trí thỏa mãn trong đoạn [last[r] + 1, r - 1]
}
cout << ans << '\n';
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "ROBOTAI"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifndef ONLINE_JUDGE
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1c2luZyBsbCA9IGxvbmcgbG9uZzsKCmNvbnN0IGludCBOID0gMmU1KzU7CgppbnQgbiwgYVtOXSwgbGFzdFtOXSwgcG9zW05dOwoKaW50IGJpdFtOXTsKdm9pZCB1cGRhdGUoaW50IHAsIGludCB2KSB7CiAgICBmb3IgKDsgcCA8PSBuOyBwICs9IHAgJiAtcCkKICAgICAgICBiaXRbcF0gKz0gdjsKfQppbnQgZ2V0KGludCBwKSB7CiAgICBpbnQgcyA9IDA7CiAgICBmb3IgKDsgcCA+IDA7IHAgLT0gcCAmIC1wKQogICAgICAgIHMgKz0gYml0W3BdOwogICAgcmV0dXJuIHM7Cn0KaW50IHF1ZXJ5KGludCBsLCBpbnQgcikgewogICAgaWYgKGwgPiByKSByZXR1cm4gMDsKICAgIHJldHVybiBnZXQocikgLSBnZXQobCAtIDEpOwp9Cgp2b2lkIHNvbHZlKCkgewogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgbGFzdFtpXSA9IHBvc1thW2ldXTsKICAgICAgICBwb3NbYVtpXV0gPSBpOwogICAgfQogICAgbGwgYW5zID0gMDsKICAgIGZvciAoaW50IHIgPSAxOyByIDw9IG47IHIrKykgewogICAgICAgIGlmIChsYXN0W3JdKSB1cGRhdGUobGFzdFtyXSwgLTEpOyAvLyBYw7NhIGzhuqduIHh14bqldCBoaeG7h24gdHLGsOG7m2MgxJHDswogICAgICAgIHVwZGF0ZShyLCAxKTsKICAgICAgICBhbnMgKz0gcXVlcnkobGFzdFtyXSArIDEsIHIgLSAxKTsgLy8gxJDhur9tIHPhu5EgduG7iyB0csOtIHRo4buPYSBtw6NuIHRyb25nIMSRb+G6oW4gW2xhc3Rbcl0gKyAxLCByIC0gMV0KICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7Cn0KCmludCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7CgogICAgI2RlZmluZSBUQVNLICJST0JPVEFJIgogICAgaWYgKGZvcGVuKFRBU0siLklOUCIsICJyIikpIHsKICAgICAgICBmcmVvcGVuKFRBU0siLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oVEFTSyIuT1VUIiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGludCB0ZXN0cyA9IDE7IC8vIGNpbiA+PiB0ZXN0czsKICAgIHdoaWxlICh0ZXN0cy0tKSBzb2x2ZSgpOwoKICAgICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBjZXJyIDw8ICJcblRpbWUgZWxhcHNlZDogIiA8PCAxLjAgKiBjbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgIiBzLlxuIjsKICAgICNlbmRpZgoKICAgIHJldHVybiAwOwp9