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 <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N=200005;

ll tab[N];

ll dac(int a,int b,ll K);

 int main()
 {
	ll n,K,i;
	scanf("%lld%lld",&n,&K);

	for(i=1;i<=n;i++)
	{
		scanf("%lld",&tab[i]);
	}

	printf("%lld\n",dac(1,n,K));
 }
//////
 ll dac(int a,int b,ll K)
 {
	if(a==b) 
	{
		if(tab[a]>=K) return 1;
		return 0;
	}
	 
	int v;
	v=(a+b)/2;
	ll wn,sm;
	wn=dac(a,v,K);
	wn+=dac(v+1,b,K);

	vector<ll> srt;
	sm=0;
	
	for(int i=v;i>=a;i--)
	{
		sm+=tab[i];
		srt.push_back(sm-K*(v-i+1));
	}		

	sort(srt.begin(),srt.end());

	sm=0;
	for(int i=v+1;i<=b;i++)
	{
		sm+=tab[i];
		auto z=lower_bound(srt.begin(),srt.end(),(i-v)*K-sm);
		wn+=distance(z,srt.end());
	}

	return wn;
 } 
