//https://ei1333.github.io/luzhiled/snippets/string/manacher.htmlを引用 #include using namespace std; #define int long long int INF = 1e18; vector< int > manacher(vector &s) { vector< int > radius(s.size()); int i = 0, j = 0; while(i < s.size()) { while(i - j >= 0 && i + j < s.size() && s[i - j] == s[i + j]) { ++j; } radius[i] = j; int k = 1; while(i - k >= 0 && i + k < s.size() && k + radius[i - k] < j) { radius[i + k] = radius[i - k]; ++k; } i += k; j -= k; } return radius; } int N; signed main(){ cin>>N; vector A(N*2); vector B(N*2-3,INF); for(int i = 0; i < N; i++){ cin>>A[i]; if(i >= 1) B[i*2-2] = A[i] - A[i-1]; } vector now = manacher(B); int ans = 0; for(int i = 0; i < N*2-3; i += 2) ans += (now[i]+1)/2; for(int i = 1; i < N*2-3; i += 2) ans += (now[i])/2; cout << ans + N << "\n"; }