#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,fma")
#pragma GCC optimize("unroll-loops")
/***
** Author: Rois Uddin Khan Emon
** Bangladesh University of Business and Technology
** Dept. of CSE.
*** version: 0.0
***/
#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string.h>
#include <string>
#include <cwctype>
#include <math.h>
#include <vector>
#include <iterator>
#include <map>
#include <set>
#include <stack>
#include <algorithm>
#define pb push_back
#define Sqr(n) (n * n)
#define Sort(v) sort(v.begin(), v.end())
#define Mxe(v) *max_element(v.begin(), v.end())
#define Mne(v) *min_element(v.begin(), v.end())
#define Fin freopen("input.txt","r", stdin)
#define Fout freopen("output.txt","w", stdout)
using namespace std;
typedef long long ll;
typedef long long int lli;
typedef unsigned long long ull;
const double PI = acos ( - 1.0 ) ;
const lli maxn = 1e5 + 7 ;
template < typename T> T Abs( T a) { if ( a < 0 ) return - a; else return a; }
template < typename T> T BigMod( T b, T p, T m) { if ( p == 0 ) return 1 ; if ( p % 2 == 0 ) { T s = BigMod( b, p / 2 , m) ; return ( ( s % m) * ( s % m) ) % m; } return ( ( b % m) * ( BigMod( b, p - 1 , m) % m) ) % m; }
template < typename T> T Pow( T B,T P) { if ( P== 0 ) return 1 ; if ( P& 1 ) return B* Pow( B,P- 1 ) ; else return Sqr( Pow( B,P/ 2 ) ) ; }
template < typename T> T gcd( T a,T b) { if ( a< 0 ) return gcd( - a,b) ; if ( b< 0 ) return gcd( a,- b) ; return ( b== 0 ) ? a: gcd( b,a% b) ; }
template < typename T> T lcm( T a,T b) { if ( a< 0 ) return lcm( - a,b) ; if ( b< 0 ) return lcm( a,- b) ; return a* ( b/ gcd( a,b) ) ; }
char uplowch( char ch) { if ( ch >= 'A' && ch <= 'Z' ) ch + = 32 ; return ch; }
char lowupch( char ch) { if ( ch >= 'a' && ch <= 'z' ) ch - = 32 ; return ch; }
string intostr( int x) { stringstream ss; ss << x; string str = ss.str ( ) ; return str; }
#define MOD 1000000007
#define MAX -1000000007
#define MIN 1000000007
int binarySearch( lli a[ ] , int left , int right, lli x) {
int count = 0 ;
int mid = 0 ;
while ( left<= right) {
mid = ( left + right) / 2 ;
if ( a[ mid] > x) {
right = mid- 1 ;
} else if ( a[ mid] < x) {
left = mid+ 1 ;
} else {
count++ ;
break ;
}
}
return count;
}
int countSubarraySum( lli a[ ] , int size, lli x) {
int count = 0 ;
int idx = upper_bound( a, a+ size, x) - a;
for ( int i = idx; i< size; i++ ) {
count + = binarySearch( a, 0 , i- 1 , a[ i] - x) ;
}
return count;
}
int main( ) {
int n;
lli x;
cin >> n>> x;
lli arr[ n] ;
for ( int i = 0 ; i< n; i++ ) {
lli val;
cin >> val;
i! = 0 ? arr[ i] = arr[ i- 1 ] + val: arr[ i] = val;
}
cout << binarySearch( arr, 0 , n- 1 , x) + countSubarraySum( arr, n, x) << endl;
return 0 ;
}
I3ByYWdtYSBHQ0Mgb3B0aW1pemUoIk9mYXN0IikKI3ByYWdtYSBHQ0MgdGFyZ2V0KCJzc2Usc3NlMixzc2UzLHNzc2UzLHNzZTQscG9wY250LGFibSxtbXgsYXZ4LGF2eDIsZm1hIikKI3ByYWdtYSBHQ0Mgb3B0aW1pemUoInVucm9sbC1sb29wcyIpCi8qKioKKiogICAgIEF1dGhvcjogUm9pcyBVZGRpbiBLaGFuIEVtb24KKiogICAgIEJhbmdsYWRlc2ggVW5pdmVyc2l0eSBvZiBCdXNpbmVzcyBhbmQgVGVjaG5vbG9neQoqKiAgICAgRGVwdC4gb2YgQ1NFLgoqKiogICAgdmVyc2lvbjogMC4wCioqKi8KCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxzc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjd2N0eXBlPgojaW5jbHVkZSA8bWF0aC5oPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxzdGFjaz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgU3FyKG4pIChuICogbikKI2RlZmluZSBTb3J0KHYpIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKQojZGVmaW5lIE14ZSh2KSAqbWF4X2VsZW1lbnQodi5iZWdpbigpLCB2LmVuZCgpKQojZGVmaW5lIE1uZSh2KSAqbWluX2VsZW1lbnQodi5iZWdpbigpLCB2LmVuZCgpKQojZGVmaW5lIEZpbiBmcmVvcGVuKCJpbnB1dC50eHQiLCJyIiwgc3RkaW4pCiNkZWZpbmUgRm91dCBmcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsIHN0ZG91dCkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKdHlwZWRlZiBsb25nIGxvbmcgaW50IGxsaTsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWxsOwpjb25zdCBkb3VibGUgUEkgPSBhY29zKC0xLjApOwpjb25zdCBsbGkgbWF4biA9IDFlNSs3OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFQgQWJzKFQgYSkgeyBpZiAoYSA8IDApIHJldHVybiAtYTsgZWxzZSByZXR1cm4gYTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBCaWdNb2QoVCBiLCBUIHAsIFQgbSkgeyBpZiAocCA9PSAwKSByZXR1cm4gMTsgaWYgKHAgJSAyID09IDApIHsgVCBzID0gQmlnTW9kKGIsIHAgLyAyLCBtKTsgcmV0dXJuICgocyAlIG0pICogKHMgJSBtKSkgJSBtOyB9IHJldHVybiAoKGIgJSBtKSAqIChCaWdNb2QoYiwgcCAtIDEsIG0pICUgbSkpICUgbTsgfQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBQb3coVCBCLFQgUCl7IGlmKFA9PTApIHJldHVybiAxOyBpZihQJjEpIHJldHVybiBCKlBvdyhCLFAtMSk7ICBlbHNlIHJldHVybiBTcXIoUG93KEIsUC8yKSk7fQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBnY2QoVCBhLFQgYil7aWYoYTwwKXJldHVybiBnY2QoLWEsYik7aWYoYjwwKXJldHVybiBnY2QoYSwtYik7cmV0dXJuIChiPT0wKT9hOmdjZChiLGElYik7fQp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBsY20oVCBhLFQgYikge2lmKGE8MClyZXR1cm4gbGNtKC1hLGIpO2lmKGI8MClyZXR1cm4gbGNtKGEsLWIpO3JldHVybiBhKihiL2djZChhLGIpKTt9CgpjaGFyIHVwbG93Y2goY2hhciBjaCl7aWYoY2ggPj0gJ0EnICYmICBjaCA8PSAnWicpIGNoICs9IDMyOyByZXR1cm4gY2g7fQpjaGFyIGxvd3VwY2goY2hhciBjaCl7aWYoY2ggPj0gJ2EnICYmICBjaCA8PSAneicpIGNoIC09IDMyOyByZXR1cm4gY2g7fQpzdHJpbmcgaW50b3N0cihpbnQgeCl7c3RyaW5nc3RyZWFtIHNzOyBzcyA8PCB4OyBzdHJpbmcgc3RyID0gc3Muc3RyKCk7IHJldHVybiBzdHI7fQoKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIE1BWCAtMTAwMDAwMDAwNwojZGVmaW5lIE1JTiAxMDAwMDAwMDA3CgppbnQgYmluYXJ5U2VhcmNoKGxsaSBhW10sIGludCBsZWZ0ICwgaW50IHJpZ2h0LCBsbGkgeCl7CiAgICBpbnQgY291bnQgPSAwOwogICAgaW50IG1pZCA9IDA7CiAgICB3aGlsZShsZWZ0PD1yaWdodCl7CiAgICAgICAgbWlkID0gKGxlZnQgKyByaWdodCkvMjsKICAgICAgICBpZihhW21pZF0+eCl7CiAgICAgICAgICAgIHJpZ2h0ID0gbWlkLTE7CiAgICAgICAgfWVsc2UgaWYoYVttaWRdPHgpewogICAgICAgICAgICBsZWZ0ID0gbWlkKzE7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gY291bnQ7Cn0KaW50IGNvdW50U3ViYXJyYXlTdW0oIGxsaSBhW10sIGludCBzaXplLCBsbGkgeCl7CiAgICBpbnQgY291bnQgPSAwOwogICAgaW50IGlkeCA9IHVwcGVyX2JvdW5kKGEsIGErc2l6ZSwgeCktYTsKICAgIGZvcihpbnQgaSA9IGlkeDsgaTxzaXplOyBpKyspewogICAgICAgIGNvdW50ICs9IGJpbmFyeVNlYXJjaChhLCAwLCBpLTEsICBhW2ldLXgpOwogICAgfQogICAgcmV0dXJuIGNvdW50Owp9CgppbnQgbWFpbigpewogICAgaW50IG47CiAgICBsbGkgeDsKICAgIGNpbj4+bj4+eDsKICAgIGxsaSBhcnJbbl07CiAgICBmb3IoaW50IGkgPSAwOyBpPG47IGkrKyl7CiAgICAgICAgbGxpIHZhbDsKICAgICAgICBjaW4+PnZhbDsKICAgICAgICBpIT0wID8gYXJyW2ldID0gYXJyW2ktMV0rdmFsOiBhcnJbaV0gPSB2YWw7CiAgICB9CiAgICBjb3V0PDxiaW5hcnlTZWFyY2goYXJyLCAwLCBuLTEsIHgpICsgY291bnRTdWJhcnJheVN1bShhcnIsIG4sIHgpPDxlbmRsOwoKICAgIHJldHVybiAwOwp9