Link to this code: https://cses.fi/paste/1983e91b6e70ca2ccf942e/
#include<iostream>
#include<vector>
#include<unordered_map>

using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> a(n, 0);
	for (int i = 0;i < n;++i) cin >> a[i];

	unordered_map<int, int> T;

	int start = 0;
	long long res = 0;
	for (int i = 0;i < n;++i) {
		if (T.find(a[i]) == T.end()) {
			T[a[i]] = i;

		}
		else {
			if (T[a[i]] < start) T[a[i]] = i;
			else {
				long long num = i - start;
				res += (num * (num + 1)) / 2;
				num = i - (T[a[i]] + 1);
				res -= (num * (num + 1)) / 2;
				start = T[a[i]] + 1;
				T[a[i]] = i;
			}
		}
	}
	long long num = n - start;
	res += (num * (num + 1))/2;
	cout << res << endl;
}