#include #include #include using namespace std; typedef long long ll; unordered_map um[40][40]; int a[200010],s[200010]; int main(){ int i,j,k,n; cin >> n; for(i=1;i<=n;i++) cin >> a[i]; ll ans = 0; s[0] = 0; for(i=1;i<=n + 2;i++) s[i] = s[i - 1] + a[i - 1]; for(i=1;i<=n + 1;i++){ // [l,i)で、平均がa[l - 1]でもa[i]でもないやつ ans += i - 1; for(j=0;j<=30;j++){ // a[l - 1]==jのものについて数える // 平均がa[i]を引く int val1 = s[i] - i*a[i]; if(um[j][a[i]].find(val1)!=um[j][a[i]].end()){ ans -= um[j][a[i]][val1]; } // 平均がjを引く int val2 = s[i] - i*j; if(a[i]!=j && um[j][j].find(val2)!=um[j][j].end()){ ans -= um[j][j][val2]; } } // for(int l=1;l> v; for(i=1;i<=n;i++){ if(v.size()==0 || v.back().first!=a[i]){ v.push_back({a[i],1}); }else{ v.back().second++; } } ans -= v.size(); ans++; cout << ans << "\n"; }