int pos[100005]; signedmain() { int n;cin >>n; vector<int> a(n+1); for(int i = 1;i <= n;i++) cin >> a[i],pos[a[i]] = i;
set<int> s; s.insert(0);s.insert(n+1); int res = 0; for(int i = n;i>=1;i--){ s.insert(pos[i]); auto it = s.lower_bound(pos[i]); auto l = it,r = it; l--,r++; auto L = l,R = r;L--,R++; if(*l>=1) res += i*(*l-*L)*(*r-pos[i]); if(*r<=n) res += i*(*R-*r)*(pos[i]-*l); } cout << res << endl; return0; }