#include <bits/stdc++.h>
using namespace std;
using ll = long long;
struct Fenwick {
int n; vector<int> bit;
Fenwick(int n=0){init(n);}
void init(int n_){ n=n_; bit.assign(n+1,0); }
void add(int i,int v){ for(;i<=n;i+=i&-i) bit[i]+=v; }
int sumPrefix(int i){ int s=0; for(;i>0;i-=i&-i) s+=bit[i]; return s; }
};
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N; cin>>N;
vector<int>A(N+1); int maxA=0;
for(int i=1;i<=N;i++){cin>>A[i]; maxA=max(maxA,A[i]);}
vector<vector<int>>pos(maxA+1);
for(int i=1;i<=N;i++) pos[A[i]].push_back(i);
const int B=700;
ll total=(ll)N*(N+1)/2;
ll bad=0;
for(int val=1;val<=maxA;val++){
int k=pos[val].size();
if(k<=B) continue;
vector<int>S(N+1);
for(int i=1;i<=N;i++) S[i]=S[i-1]+(A[i]==val?1:-1);
vector<int>comp=S; sort(comp.begin(),comp.end());
comp.erase(unique(comp.begin(),comp.end()),comp.end());
Fenwick fw(comp.size()+2);
for(int i=0;i<=N;i++){
int id=lower_bound(comp.begin(),comp.end(),S[i])-comp.begin()+1;
bad+=fw.sumPrefix(id-1);
fw.add(id,1);
}
}
for(int val=1;val<=maxA;val++){
int k=pos[val].size();
if(k==0||k>B) continue;
vector<int>p; p.push_back(0);
for(int x:pos[val]) p.push_back(x);
p.push_back(N+1);
for(int t=1;t<=k;t++){
for(int i=1;i+t-1<=k;i++){
int left_prev=p[i-1], left_first=p[i];
int right_last=p[i+t-1], right_next=p[i+t];
int Lstart=left_prev+1, Lend=left_first;
if(Lstart>Lend) continue;
int Rmin=right_last, Rmax_cap=right_next-1;
if(Rmin>Rmax_cap) continue;
ll Cconst=2LL*t-1-Rmin;
int D=Rmax_cap-(2*t-2);
int L1=max(Lstart,Rmin-(2*t-2)), L2=min(Lend,D);
ll sum=0;
if(L1<=L2){
ll cnt=L2-L1+1;
ll sumL=(ll)(L1+L2)*cnt/2;
sum+=sumL+cnt*Cconst;
}
int L3=max(Lstart,D+1), L4=Lend;
if(L3<=L4){
ll cnt=L4-L3+1;
ll valR=Rmax_cap-Rmin+1;
if(valR>0) sum+=cnt*valR;
}
if(sum>0) bad+=sum;
}
}
}
cout<<total-bad<<"\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKc3RydWN0IEZlbndpY2sgewogICAgaW50IG47IHZlY3RvcjxpbnQ+IGJpdDsKICAgIEZlbndpY2soaW50IG49MCl7aW5pdChuKTt9CiAgICB2b2lkIGluaXQoaW50IG5fKXsgbj1uXzsgYml0LmFzc2lnbihuKzEsMCk7IH0KICAgIHZvaWQgYWRkKGludCBpLGludCB2KXsgZm9yKDtpPD1uO2krPWkmLWkpIGJpdFtpXSs9djsgfQogICAgaW50IHN1bVByZWZpeChpbnQgaSl7IGludCBzPTA7IGZvcig7aT4wO2ktPWkmLWkpIHMrPWJpdFtpXTsgcmV0dXJuIHM7IH0KfTsKCmludCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgaW50IE47IGNpbj4+TjsKICAgIHZlY3RvcjxpbnQ+QShOKzEpOyBpbnQgbWF4QT0wOwogICAgZm9yKGludCBpPTE7aTw9TjtpKyspe2Npbj4+QVtpXTsgbWF4QT1tYXgobWF4QSxBW2ldKTt9CiAgICB2ZWN0b3I8dmVjdG9yPGludD4+cG9zKG1heEErMSk7CiAgICBmb3IoaW50IGk9MTtpPD1OO2krKykgcG9zW0FbaV1dLnB1c2hfYmFjayhpKTsKICAgIGNvbnN0IGludCBCPTcwMDsKICAgIGxsIHRvdGFsPShsbClOKihOKzEpLzI7CiAgICBsbCBiYWQ9MDsKICAgIGZvcihpbnQgdmFsPTE7dmFsPD1tYXhBO3ZhbCsrKXsKICAgICAgICBpbnQgaz1wb3NbdmFsXS5zaXplKCk7CiAgICAgICAgaWYoazw9QikgY29udGludWU7CiAgICAgICAgdmVjdG9yPGludD5TKE4rMSk7CiAgICAgICAgZm9yKGludCBpPTE7aTw9TjtpKyspIFNbaV09U1tpLTFdKyhBW2ldPT12YWw/MTotMSk7CiAgICAgICAgdmVjdG9yPGludD5jb21wPVM7IHNvcnQoY29tcC5iZWdpbigpLGNvbXAuZW5kKCkpOwogICAgICAgIGNvbXAuZXJhc2UodW5pcXVlKGNvbXAuYmVnaW4oKSxjb21wLmVuZCgpKSxjb21wLmVuZCgpKTsKICAgICAgICBGZW53aWNrIGZ3KGNvbXAuc2l6ZSgpKzIpOwogICAgICAgIGZvcihpbnQgaT0wO2k8PU47aSsrKXsKICAgICAgICAgICAgaW50IGlkPWxvd2VyX2JvdW5kKGNvbXAuYmVnaW4oKSxjb21wLmVuZCgpLFNbaV0pLWNvbXAuYmVnaW4oKSsxOwogICAgICAgICAgICBiYWQrPWZ3LnN1bVByZWZpeChpZC0xKTsKICAgICAgICAgICAgZncuYWRkKGlkLDEpOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgdmFsPTE7dmFsPD1tYXhBO3ZhbCsrKXsKICAgICAgICBpbnQgaz1wb3NbdmFsXS5zaXplKCk7CiAgICAgICAgaWYoaz09MHx8az5CKSBjb250aW51ZTsKICAgICAgICB2ZWN0b3I8aW50PnA7IHAucHVzaF9iYWNrKDApOwogICAgICAgIGZvcihpbnQgeDpwb3NbdmFsXSkgcC5wdXNoX2JhY2soeCk7CiAgICAgICAgcC5wdXNoX2JhY2soTisxKTsKICAgICAgICBmb3IoaW50IHQ9MTt0PD1rO3QrKyl7CiAgICAgICAgICAgIGZvcihpbnQgaT0xO2krdC0xPD1rO2krKyl7CiAgICAgICAgICAgICAgICBpbnQgbGVmdF9wcmV2PXBbaS0xXSwgbGVmdF9maXJzdD1wW2ldOwogICAgICAgICAgICAgICAgaW50IHJpZ2h0X2xhc3Q9cFtpK3QtMV0sIHJpZ2h0X25leHQ9cFtpK3RdOwogICAgICAgICAgICAgICAgaW50IExzdGFydD1sZWZ0X3ByZXYrMSwgTGVuZD1sZWZ0X2ZpcnN0OwogICAgICAgICAgICAgICAgaWYoTHN0YXJ0PkxlbmQpIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaW50IFJtaW49cmlnaHRfbGFzdCwgUm1heF9jYXA9cmlnaHRfbmV4dC0xOwogICAgICAgICAgICAgICAgaWYoUm1pbj5SbWF4X2NhcCkgY29udGludWU7CiAgICAgICAgICAgICAgICBsbCBDY29uc3Q9MkxMKnQtMS1SbWluOwogICAgICAgICAgICAgICAgaW50IEQ9Um1heF9jYXAtKDIqdC0yKTsKICAgICAgICAgICAgICAgIGludCBMMT1tYXgoTHN0YXJ0LFJtaW4tKDIqdC0yKSksIEwyPW1pbihMZW5kLEQpOwogICAgICAgICAgICAgICAgbGwgc3VtPTA7CiAgICAgICAgICAgICAgICBpZihMMTw9TDIpewogICAgICAgICAgICAgICAgICAgIGxsIGNudD1MMi1MMSsxOwogICAgICAgICAgICAgICAgICAgIGxsIHN1bUw9KGxsKShMMStMMikqY250LzI7CiAgICAgICAgICAgICAgICAgICAgc3VtKz1zdW1MK2NudCpDY29uc3Q7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbnQgTDM9bWF4KExzdGFydCxEKzEpLCBMND1MZW5kOwogICAgICAgICAgICAgICAgaWYoTDM8PUw0KXsKICAgICAgICAgICAgICAgICAgICBsbCBjbnQ9TDQtTDMrMTsKICAgICAgICAgICAgICAgICAgICBsbCB2YWxSPVJtYXhfY2FwLVJtaW4rMTsKICAgICAgICAgICAgICAgICAgICBpZih2YWxSPjApIHN1bSs9Y250KnZhbFI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihzdW0+MCkgYmFkKz1zdW07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBjb3V0PDx0b3RhbC1iYWQ8PCJcbiI7Cn0K