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>
using namespace std;

typedef long long ll;

ll a[200005];
ll c[200005];
int n, k;

ll slv(int lo, int hi)
{
	if (lo == hi) return 0;
	if (lo+1 == hi) return a[lo] >= 0;
	int mid = (lo+hi) / 2;
	ll ans = slv(lo, mid)+slv(mid, hi);
	vector<ll> s1, s2;
	for (int i = lo;i < mid;i++) s1.push_back(c[mid-1]-c[i-1]);
	for (int i = mid;i < hi;i++) s2.push_back(c[i]-c[mid-1]);
	sort(s1.begin(), s1.end(), greater<ll>());
	sort(s2.begin(), s2.end(), greater<ll>());
	int ptr = s1.size()-1;
	for (unsigned i = 0;i < s2.size();i++)
	{
		while (ptr >= 0 && s1[ptr]+s2[i] < 0) ptr--;
		ans += ptr+1;
	}
	return ans;
}

int main()
{
	scanf("%d%d", &n, &k);
	for (int i = 1;i <= n;i++) scanf("%lld", a+i);
	for (int i = 1;i <= n;i++) a[i] -= k;
	for (int i = 1;i <= n;i++) c[i] = c[i-1]+a[i];
	printf("%lld\n", slv(1, n+1));
	return 0;
}
