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 <iostream>
#include <vector>

using namespace std;

template<typename T>
long long countTranspose(vector<T>& v){
	if(v.size() <= 1) return 0;
	const int n = v.size();
	vector<T> a(v.begin(), v.begin() + n/2);
	vector<T> b(v.begin() + n/2, v.end());
	long long res = countTranspose(a) + countTranspose(b);
	int idxA = 0, idxB = 0;
	for(int i=0;i<n;i++){
		if(idxB < b.size() && (idxA == a.size() || a[idxA] > b[idxB])){
			v[idxA+idxB] = b[idxB];
			++idxB;
			res += a.size() - idxA;
		} else {
			v[idxA+idxB] = a[idxA];
			++idxA;
		}
	}
	return res;
}

int main(){
	int N; long long K;
	while(cin >> N >> K){
		vector<long long> l;
		l.push_back(0);
		long long sum = 0;
		for(int i=0;i<N;i++){
			long long a; cin >> a;
			sum += a - K;
			l.push_back(sum);
		}
		cout << (N * (N+1LL) / 2 - countTranspose(l)) << endl;
	}
}
