#include<bits/stdc++.h>
using namespace std;
main(){
int n,k;
cin>>n>>k;
vector<int>arr(n);
for(auto &it:arr)cin>>it;
unordered_map<int, int> prefixSums;
int res = 0;
int currSum = 0;
for (int i = 0; i < arr.size(); i++) {
currSum += arr[i];
if (currSum == k)
res++;
if (prefixSums.find(currSum - k) != prefixSums.end())
res += prefixSums[currSum - k];
// Add currSum to the set of prefix sums.
prefixSums[currSum]++;
}
cout<<res<<"\n";
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm1haW4oKXsKICAgIGludCBuLGs7CiAgICBjaW4+Pm4+Pms7CiAgICB2ZWN0b3I8aW50PmFycihuKTsKICAgIGZvcihhdXRvICZpdDphcnIpY2luPj5pdDsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IHByZWZpeFN1bXM7CiAgCiAgICBpbnQgcmVzID0gMDsKICAgIGludCBjdXJyU3VtID0gMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyci5zaXplKCk7IGkrKykgewogICAgICAgIGN1cnJTdW0gKz0gYXJyW2ldOwogICAgICAgIGlmIChjdXJyU3VtID09IGspCiAgICAgICAgICAgIHJlcysrOwogICAgICAgIGlmIChwcmVmaXhTdW1zLmZpbmQoY3VyclN1bSAtIGspICE9IHByZWZpeFN1bXMuZW5kKCkpCiAgICAgICAgICAgIHJlcyArPSBwcmVmaXhTdW1zW2N1cnJTdW0gLSBrXTsKCiAgICAgICAgLy8gQWRkIGN1cnJTdW0gdG8gdGhlIHNldCBvZiBwcmVmaXggc3Vtcy4KICAgICAgICBwcmVmaXhTdW1zW2N1cnJTdW1dKys7CiAgICB9CiAgICBjb3V0PDxyZXM8PCJcbiI7Cn0=