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>
#define int long long

using namespace std;

const int N = 234567;

int a[N];
int b[N];
int c[N];
int tree[N];

void add(int k,int n)
{
    for(;k<=n;k+=(k&-k)){
        tree[k]++;
    }
}

int read(int k)
{
    int sum = 0;
    for(;k;k-=(k&-k)){
        sum += tree[k];
    }
    return sum;
}

signed main()
{
    int n,k;
    scanf("%lld %lld",&n,&k);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
        a[i] -= k;
    }
    b[0] = 0;
    int h = 0;
    for(int i=1;i<=n;i++){
        b[i] = b[i-1] + a[i];
        c[h++] = b[i];
    }
    sort(c,c+n);
    int len = unique(c,c+n)-c;
    for(int i=0;i<=n;i++){
        b[i] = lower_bound(c,c+len,b[i])-c+1;
    }
    int q = 0;
    for(int i=0;i<=n;i++){
        q += read(b[i]);
        add(b[i],len);
    }
    printf("%lld\n",q);
    return 0;
}
