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
import java.util.*;

public class Main {
  static int N;
  static int[] bit;

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    N = sc.nextInt();
    int K = sc.nextInt();
    long s = 0;
    long[] sList = new long[N];
    HashSet<Long> set = new HashSet<Long>();
    set.add(s);
    for(int i = 0; i < N; i++) {
      long a = sc.nextLong();
      a -= K;
      s += a;
      sList[i] = s;
      set.add(s);
    }
    ArrayList<Long> list = new ArrayList<Long>();
    Iterator<Long> it = set.iterator();
    while(it.hasNext()) {
      list.add(it.next());
    }
    Collections.sort(list);
    HashMap<Long, Integer> map = new HashMap<Long, Integer>();
    int index = 1;
    for(int i = 0; i < list.size(); i++) {
      map.put(list.get(i), index);
      index++;
    }
    bit = new int[N + 2];
    add(map.get((long)0), 1);
    long ans = 0;
    for(int i = 0; i < N; i++) {
      int l = map.get(sList[i]);
      ans += sum(l);
      add(l, 1);
    }
    System.out.println(ans);
  }

  static void add(int a, int w) {
    for(int x = a; x <= N + 1; x += x & -x) bit[x] += w;
  }

  static int sum(int a) {
    int ret = 0;
    for(int x = a; x > 0; x -= x & -x) ret += bit[x];
    return ret;
  }
}