func_code_string: #include <bits/stdc++.h>   using namespace std;   mt19937_64 rd(787);   int a[500010];   int cnt[500010];   unsigned long long has[500010];   unsigned long long val[500010];   list<int> vec[500010];   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     auto t = clock();     auto now_time = [&] { return (clock() - t) / (double)CLOCKS_PER_SEC; };     int n;     cin >> n;     unsigned long long anss = 1e18;     for (int i = 1; i <= n; i++) cin >> a[i];     while (now_time() < 4) {       for (int i = 1; i <= n; i++) val[i] = rd(), vec[i].clear();       unsigned long long ans = 0;       map<unsigned long long, int> mp;       mp[0]++;       int pre = 0;       for (int i = 1; i <= n; i++) {         int tmp = a[i];         has[i] = has[i - 1] + val[tmp], cnt[tmp]++, vec[tmp].push_back(i);         if (cnt[tmp] % 3 == 0) {           has[i] -= 3 * val[tmp];         }         mp[has[i]]++;         if (vec[tmp].size() > 3) {           int now = vec[tmp].front();           vec[tmp].pop_front();           for (; pre < now; pre++) {             mp[has[pre]]--;           }         }         ans += mp[has[i]] - 1;       }       anss = min(ans, anss);       break;     }     cout << anss << endl;   }   