You are given an integer sequence of length N, a = {a_1, a_2, …, a_N}, and an integer K.

a has N(N+1)/2 non-empty contiguous subsequences, {a_l, a_{l+1}, …, a_r} (1 ≤ l ≤ r ≤ N). Among them, how many have an arithmetic mean that is greater than or equal to K?

Constraints

* All input values are integers.
* 1 ≤ N ≤ 2 \times 10^5
* 1 ≤ K ≤ 10^9
* 1 ≤ a_i ≤ 10^9

Input

Input is given from Standard Input in the following format:


N K
a_1
a_2
:
a_N


Output

Print the number of the non-empty contiguous subsequences with an arithmetic mean that is greater than or equal to K.

Examples

Input

3 6
7
5
7


Output

5


Input

1 2
1


Output

0


Input

7 26
10
20
30
40
30
20
10


Output

13
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
#define ll long long

using namespace std;

const int N = 4e5+10; 

ll sum[N],ans;
ll n,k;
vector<ll>Q;

ll read(){
     ll x=0,f=1;char ch=getchar();
     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
     return x*f;
}


struct bttree{
	ll t[N<<1];
	void add(ll x){while(x<=N){t[x]++,x+=x&(-x);}}
	ll query(ll x,int r=0){for(;x;x-=x&(-x))r+=t[x];return r;}
}tr;
int main(){
	cin>>n>>k;
	for(ll i=1;i<=n;i++){sum[i]=read();sum[i]+=sum[i-1]-k;}//*****
	for(ll i=0;i<=n;i++)Q.push_back(sum[i]);
	sort(Q.begin(),Q.end());
	for(ll i=0;i<=n;i++)sum[i]=lower_bound(Q.begin(),Q.end(),sum[i])-Q.begin()+1;//***
	for(ll i=0;i<=n;i++){		
		ans+=tr.query(sum[i]);
		tr.add(sum[i]);		
	}
	printf("%lld\n",ans);
	return 0;
}
