// Lower Bound + Upper Bound
#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 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;
}
int count = 0 ;
int idx = lower_bound( arr, arr+ n, x) - arr;
if ( arr[ idx] == x) {
count++ ;
}
for ( int i = idx+ 1 ; i< n; i++ ) {
int index = lower_bound( arr, arr+ n, arr[ i] - x) - arr;
if ( arr[ index] == ( arr[ i] - x) ) {
count++ ;
}
}
cout << count<< endl;
return 0 ;
}
Ly8gTG93ZXIgQm91bmQgKyBVcHBlciBCb3VuZAojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QiKQojcHJhZ21hIEdDQyB0YXJnZXQoInNzZSxzc2UyLHNzZTMsc3NzZTMsc3NlNCxwb3BjbnQsYWJtLG1teCxhdngsYXZ4MixmbWEiKQojcHJhZ21hIEdDQyBvcHRpbWl6ZSgidW5yb2xsLWxvb3BzIikKLyoqKgoqKiAgICAgQXV0aG9yOiBSb2lzIFVkZGluIEtoYW4gRW1vbgoqKiAgICAgQmFuZ2xhZGVzaCBVbml2ZXJzaXR5IG9mIEJ1c2luZXNzIGFuZCBUZWNobm9sb2d5CioqICAgICBEZXB0LiBvZiBDU0UuCioqKiAgICB2ZXJzaW9uOiAwLjAKKioqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGN3Y3R5cGU+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxpdGVyYXRvcj4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBTcXIobikgKG4gKiBuKQojZGVmaW5lIFNvcnQodikgc29ydCh2LmJlZ2luKCksIHYuZW5kKCkpCiNkZWZpbmUgTXhlKHYpICptYXhfZWxlbWVudCh2LmJlZ2luKCksIHYuZW5kKCkpCiNkZWZpbmUgTW5lKHYpICptaW5fZWxlbWVudCh2LmJlZ2luKCksIHYuZW5kKCkpCiNkZWZpbmUgRmluIGZyZW9wZW4oImlucHV0LnR4dCIsInIiLCBzdGRpbikKI2RlZmluZSBGb3V0IGZyZW9wZW4oIm91dHB1dC50eHQiLCJ3Iiwgc3Rkb3V0KQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgbG9uZyBpbnQgbGxpOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEuMCk7CmNvbnN0IGxsaSBtYXhuID0gMWU1Kzc7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBBYnMoVCBhKSB7IGlmIChhIDwgMCkgcmV0dXJuIC1hOyBlbHNlIHJldHVybiBhOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIEJpZ01vZChUIGIsIFQgcCwgVCBtKSB7IGlmIChwID09IDApIHJldHVybiAxOyBpZiAocCAlIDIgPT0gMCkgeyBUIHMgPSBCaWdNb2QoYiwgcCAvIDIsIG0pOyByZXR1cm4gKChzICUgbSkgKiAocyAlIG0pKSAlIG07IH0gcmV0dXJuICgoYiAlIG0pICogKEJpZ01vZChiLCBwIC0gMSwgbSkgJSBtKSkgJSBtOyB9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIFBvdyhUIEIsVCBQKXsgaWYoUD09MCkgcmV0dXJuIDE7IGlmKFAmMSkgcmV0dXJuIEIqUG93KEIsUC0xKTsgIGVsc2UgcmV0dXJuIFNxcihQb3coQixQLzIpKTt9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIGdjZChUIGEsVCBiKXtpZihhPDApcmV0dXJuIGdjZCgtYSxiKTtpZihiPDApcmV0dXJuIGdjZChhLC1iKTtyZXR1cm4gKGI9PTApP2E6Z2NkKGIsYSViKTt9CnRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUIGxjbShUIGEsVCBiKSB7aWYoYTwwKXJldHVybiBsY20oLWEsYik7aWYoYjwwKXJldHVybiBsY20oYSwtYik7cmV0dXJuIGEqKGIvZ2NkKGEsYikpO30KCmNoYXIgdXBsb3djaChjaGFyIGNoKXtpZihjaCA+PSAnQScgJiYgIGNoIDw9ICdaJykgY2ggKz0gMzI7IHJldHVybiBjaDt9CmNoYXIgbG93dXBjaChjaGFyIGNoKXtpZihjaCA+PSAnYScgJiYgIGNoIDw9ICd6JykgY2ggLT0gMzI7IHJldHVybiBjaDt9CnN0cmluZyBpbnRvc3RyKGludCB4KXtzdHJpbmdzdHJlYW0gc3M7IHNzIDw8IHg7IHN0cmluZyBzdHIgPSBzcy5zdHIoKTsgcmV0dXJuIHN0cjt9CgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgTUFYIC0xMDAwMDAwMDA3CiNkZWZpbmUgTUlOIDEwMDAwMDAwMDcKCmludCBtYWluKCl7CiAgICBpbnQgbjsKICAgIGxsaSB4OwogICAgY2luPj5uPj54OwogICAgbGxpIGFycltuXTsKICAgIGZvcihpbnQgaSA9IDA7IGk8bjsgaSsrKXsKICAgICAgICBsbGkgdmFsOwogICAgICAgIGNpbj4+dmFsOwogICAgICAgIGkhPTAgPyBhcnJbaV0gPSBhcnJbaS0xXSt2YWw6IGFycltpXSA9IHZhbDsKICAgIH0KICAgIGludCBjb3VudCA9IDA7CiAgICBpbnQgaWR4ID0gbG93ZXJfYm91bmQoYXJyLCBhcnIrbiwgeCktYXJyOwogICAgaWYoYXJyW2lkeF09PXgpewogICAgICAgIGNvdW50Kys7CiAgICB9CiAgICBmb3IoaW50IGkgPSBpZHgrMTsgaTxuOyBpKyspewogICAgICAgIGludCBpbmRleCA9IGxvd2VyX2JvdW5kKGFyciwgYXJyK24sIGFycltpXS14KS1hcnI7CiAgICAgICAgaWYoYXJyW2luZGV4XT09KGFycltpXS14KSl7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgY291dDw8Y291bnQ8PGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=