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<algorithm>
using namespace std;
int K, n;
struct point {
	long long x, y;
	bool operator<(const point &p)const {
		if (x < p.x) {
			return (p.y - y) >= (p.x - x) * K;
		}
		else {
			return (y - p.y) < (x - p.x) * K;
		}
	}
}w[201000];
int BIT[201000];
void Add(int a) {
	while (a <= n) {
		BIT[a]++;
		a += (a&-a);
	}
}
int Sum(int a) {
	int r = 0;
	while (a) {
		r += BIT[a];
		a -= (a&-a);
	}
	return r;
}
int main() {
	int i, a;
	scanf("%d%d", &n, &K);
	w[1] = { 1,0 };
	for (i = 1; i <= n; i++) {
		scanf("%d", &a);
		w[i+1] = { i+1,w[i].y + a };
	}
	n++;
	sort(w+1, w + n+1);
	long long res = 0;
	for (i = 1; i <= n; i++) {
		int x = w[i].x;
		res += n - x + 1 - (i - Sum(x));
		Add(x);
	}
	printf("%lld\n", res);
}