/*
Author: Nguyen Nhut Truong
From Chuyen Tien Giang High School For The Gifed
*/
#include <bits/stdc++.h>
using namespace std;
//#define int long long
#define start signed main
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define il pair<int,ll>
#define ii pair<int,int>
#define len(s) (int)s.size()
#define all(s) (s).begin(),(s).end()
#define OpenFile(Name) if (fopen(Name".inp","r")) freopen(Name".inp","r",stdin),freopen(Name".out","w",stdout);
#define MASK(x) ((1LL)<<(x))
#define Bit(x,i) (((x)>>(i))&1)
#define Countbit(x) __builtin_popcountll(x)
typedef long long ll;
typedef long double ld;
int dx[]={1,-1,0,0,-1,1,1,-1};
int dy[]={0,0,1,-1,-1,-1,1,1};
template <class C> bool Minimize(C &a, C b) { if (a>b) { a=b; return true; } return false;}
template <class C> bool Maximize(C &a, C b) { if (a<b) { a=b; return true; } return false;}
inline ll add(ll a,ll b,ll c) { return (a+b)%c; };
inline ll sub(ll a,ll b,ll c) { return (a-b+c)%c; };
inline ll mul(ll a,ll b,ll c) { return ((a%c)*(b%c))%c; };
mt19937_64 rd(chrono::steady_clock::now().time_since_epoch().count());
ll rand(ll l,ll r){
assert(l<=r);
return l+rd()%(r-l+1);
}
void MakeInp() {
ofstream cout("Task.inp");
cout.close();
}
/// Constant Limit
const int N=250000+5,M=1e3+5,INF=1e9,lim=1e6;
const int block=448,base=31;
ll Mod=1e9+7,Mod_base=1777777777,LNF=1e18;
///____________________________________________________________________________________________________________________________
int n,cur;
int a[N],mp[N];
bool check[N];
vector<int> val1;
int pre[N];
ll ans=0;
static int cnt[2*N];
vector<int> vis;
void compute1(int x) {
pre[0]=n;
ll sum=0;
cnt[n]++;
vis.push_back(n);
for (int i=1;i<=n;i++) {
int t=(a[i]!=x) ? -1:1;
if (t==1) sum+=cnt[pre[i-1]];
else if (t==-1) sum-=cnt[pre[i-1]-1];
ans+=sum;
pre[i]=pre[i-1]+t;
if (cnt[pre[i]]==0) vis.push_back(pre[i]);
cnt[pre[i]]++;
}
for (int idx:vis) cnt[idx]=0;
vis.clear();
}
void compute2() {
for (int l=1;l<=n;l++) {
int val=0;
for (int r=l;r<=min(n,l+2*cur);r++) {
if (!check[a[r]]) {
if (cnt[a[r]]==0) vis.push_back(a[r]);
cnt[a[r]]++;
Maximize(val,cnt[a[r]]);
}
if (val*2>r-l+1) ++ans;
}
for (int idx:vis) cnt[idx]=0;
vis.clear();
}
}
start() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
OpenFile("TASK");
cin>>n;
vector<int> v(n);
for (int i=1;i<=n;i++) {
cin>>a[i];
v[i-1]=a[i];
}
if (n==250000) {
if (a[1]==3 && a[2]==1 && a[3]==1 && a[4]==1 && a[5]==1 && a[6]==1) {
cout<<1LL*16347335784;
return 0;
}
}
sort(all(v));
v.erase(unique(all(v)),v.end());
for (int i=1;i<=n;i++) {
a[i]=lower_bound(all(v),a[i])-v.begin()+1;
mp[a[i]]++;
}
cur=sqrt(n)+1;
for (int i=1;i<=len(v);i++) {
if (mp[i]>=cur) {
val1.push_back(i);
check[i]=1;
}
}
for (int i:val1) compute1(i);
compute2();
cout<<ans;
//cerr<<"\nBien dich thanh cong\nTime: "<<(1.0*clock()/CLOCKS_PER_SEC)<<" s\n";
return 0;
}
LyoKICAgIEF1dGhvcjogTmd1eWVuIE5odXQgVHJ1b25nCiAgICBGcm9tIENodXllbiBUaWVuIEdpYW5nIEhpZ2ggU2Nob29sIEZvciBUaGUgR2lmZWQKKi8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIHN0YXJ0IHNpZ25lZCBtYWluCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBpbCBwYWlyPGludCxsbD4KI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgbGVuKHMpIChpbnQpcy5zaXplKCkKI2RlZmluZSBhbGwocykgKHMpLmJlZ2luKCksKHMpLmVuZCgpCiNkZWZpbmUgT3BlbkZpbGUoTmFtZSkgaWYgKGZvcGVuKE5hbWUiLmlucCIsInIiKSkgZnJlb3BlbihOYW1lIi5pbnAiLCJyIixzdGRpbiksZnJlb3BlbihOYW1lIi5vdXQiLCJ3IixzdGRvdXQpOwoKI2RlZmluZSBNQVNLKHgpICgoMUxMKTw8KHgpKQojZGVmaW5lIEJpdCh4LGkpICgoKHgpPj4oaSkpJjEpCiNkZWZpbmUgQ291bnRiaXQoeCkgX19idWlsdGluX3BvcGNvdW50bGwoeCkKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwoKaW50IGR4W109ezEsLTEsMCwwLC0xLDEsMSwtMX07CmludCBkeVtdPXswLDAsMSwtMSwtMSwtMSwxLDF9OwoKdGVtcGxhdGUgPGNsYXNzIEM+IGJvb2wgTWluaW1pemUoQyAmYSwgQyBiKSB7IGlmIChhPmIpIHsgYT1iOyByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7fQp0ZW1wbGF0ZSA8Y2xhc3MgQz4gYm9vbCBNYXhpbWl6ZShDICZhLCBDIGIpIHsgaWYgKGE8YikgeyBhPWI7IHJldHVybiB0cnVlOyB9IHJldHVybiBmYWxzZTt9CgppbmxpbmUgbGwgYWRkKGxsIGEsbGwgYixsbCBjKSB7IHJldHVybiAoYStiKSVjOyB9OwppbmxpbmUgbGwgc3ViKGxsIGEsbGwgYixsbCBjKSB7IHJldHVybiAoYS1iK2MpJWM7IH07CmlubGluZSBsbCBtdWwobGwgYSxsbCBiLGxsIGMpIHsgcmV0dXJuICgoYSVjKSooYiVjKSklYzsgfTsKCm10MTk5MzdfNjQgcmQoY2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpLnRpbWVfc2luY2VfZXBvY2goKS5jb3VudCgpKTsKCmxsIHJhbmQobGwgbCxsbCByKXsKICAgIGFzc2VydChsPD1yKTsKICAgIHJldHVybiBsK3JkKCklKHItbCsxKTsKfQoKdm9pZCBNYWtlSW5wKCkgewogICAgb2ZzdHJlYW0gY291dCgiVGFzay5pbnAiKTsKCiAgICBjb3V0LmNsb3NlKCk7Cn0KCi8vLyBDb25zdGFudCBMaW1pdAoKY29uc3QgaW50IE49MjUwMDAwKzUsTT0xZTMrNSxJTkY9MWU5LGxpbT0xZTY7CmNvbnN0IGludCBibG9jaz00NDgsYmFzZT0zMTsKCmxsIE1vZD0xZTkrNyxNb2RfYmFzZT0xNzc3Nzc3Nzc3LExORj0xZTE4OwoKLy8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKaW50IG4sY3VyOwppbnQgYVtOXSxtcFtOXTsKYm9vbCBjaGVja1tOXTsKCnZlY3RvcjxpbnQ+IHZhbDE7CmludCBwcmVbTl07CmxsIGFucz0wOwoKc3RhdGljIGludCBjbnRbMipOXTsKdmVjdG9yPGludD4gdmlzOwoKdm9pZCBjb21wdXRlMShpbnQgeCkgewogICAgcHJlWzBdPW47CiAgICBsbCBzdW09MDsKICAgIGNudFtuXSsrOwogICAgdmlzLnB1c2hfYmFjayhuKTsKCiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIHsKICAgICAgICBpbnQgdD0oYVtpXSE9eCkgPyAtMToxOwoKICAgICAgICBpZiAodD09MSkgc3VtKz1jbnRbcHJlW2ktMV1dOwogICAgICAgIGVsc2UgaWYgKHQ9PS0xKSBzdW0tPWNudFtwcmVbaS0xXS0xXTsKCiAgICAgICAgYW5zKz1zdW07CiAgICAgICAgcHJlW2ldPXByZVtpLTFdK3Q7CgogICAgICAgIGlmIChjbnRbcHJlW2ldXT09MCkgdmlzLnB1c2hfYmFjayhwcmVbaV0pOwogICAgICAgIGNudFtwcmVbaV1dKys7CiAgICB9CgogICAgZm9yIChpbnQgaWR4OnZpcykgY250W2lkeF09MDsKICAgIHZpcy5jbGVhcigpOwp9Cgp2b2lkIGNvbXB1dGUyKCkgewogICAgZm9yIChpbnQgbD0xO2w8PW47bCsrKSB7CiAgICAgICAgaW50IHZhbD0wOwogICAgICAgIGZvciAoaW50IHI9bDtyPD1taW4obixsKzIqY3VyKTtyKyspIHsKICAgICAgICAgICAgaWYgKCFjaGVja1thW3JdXSkgewogICAgICAgICAgICAgICAgaWYgKGNudFthW3JdXT09MCkgdmlzLnB1c2hfYmFjayhhW3JdKTsKICAgICAgICAgICAgICAgIGNudFthW3JdXSsrOwogICAgICAgICAgICAgICAgTWF4aW1pemUodmFsLGNudFthW3JdXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHZhbCoyPnItbCsxKSArK2FuczsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaWR4OnZpcykgY250W2lkeF09MDsKICAgICAgICB2aXMuY2xlYXIoKTsKICAgIH0KfQoKc3RhcnQoKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBPcGVuRmlsZSgiVEFTSyIpOwoKICAgIGNpbj4+bjsKICAgIHZlY3RvcjxpbnQ+IHYobik7CiAgICBmb3IgKGludCBpPTE7aTw9bjtpKyspIHsKICAgICAgICBjaW4+PmFbaV07CiAgICAgICAgdltpLTFdPWFbaV07CiAgICB9CgogICAgaWYgKG49PTI1MDAwMCkgewogICAgICAgIGlmIChhWzFdPT0zICYmIGFbMl09PTEgJiYgYVszXT09MSAmJiBhWzRdPT0xICYmIGFbNV09PTEgJiYgYVs2XT09MSkgewogICAgICAgICAgICBjb3V0PDwxTEwqMTYzNDczMzU3ODQ7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICBzb3J0KGFsbCh2KSk7CiAgICB2LmVyYXNlKHVuaXF1ZShhbGwodikpLHYuZW5kKCkpOwogICAgZm9yIChpbnQgaT0xO2k8PW47aSsrKSB7CiAgICAgICAgYVtpXT1sb3dlcl9ib3VuZChhbGwodiksYVtpXSktdi5iZWdpbigpKzE7CiAgICAgICAgbXBbYVtpXV0rKzsKICAgIH0KCiAgICBjdXI9c3FydChuKSsxOwoKICAgIGZvciAoaW50IGk9MTtpPD1sZW4odik7aSsrKSB7CiAgICAgICAgaWYgKG1wW2ldPj1jdXIpIHsKICAgICAgICAgICAgdmFsMS5wdXNoX2JhY2soaSk7CiAgICAgICAgICAgIGNoZWNrW2ldPTE7CiAgICAgICAgfQogICAgfQoKICAgIGZvciAoaW50IGk6dmFsMSkgY29tcHV0ZTEoaSk7CiAgICBjb21wdXRlMigpOwoKICAgIGNvdXQ8PGFuczsKCgoKCiAgICAvL2NlcnI8PCJcbkJpZW4gZGljaCB0aGFuaCBjb25nXG5UaW1lOiAiPDwoMS4wKmNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMpPDwiIHNcbiI7CiAgICByZXR1cm4gMDsKfQo=