You are given an integer sequence a_1, a_2, ..., a_n.

Find the number of pairs of indices (l, r) (1 ≤ l ≤ r ≤ n) such that the value of median of a_l, a_{l+1}, ..., a_r is exactly the given number m.

The median of a sequence is the value of an element which is in the middle of the sequence after sorting it in non-decreasing order. If the length of the sequence is even, the left of two middle elements is used.

For example, if a=[4, 2, 7, 5] then its median is 4 since after sorting the sequence, it will look like [2, 4, 5, 7] and the left of two middle elements is equal to 4. The median of [7, 1, 2, 9, 6] equals 6 since after sorting, the value 6 will be in the middle of the sequence.

Write a program to find the number of pairs of indices (l, r) (1 ≤ l ≤ r ≤ n) such that the value of median of a_l, a_{l+1}, ..., a_r is exactly the given number m.

Input

The first line contains integers n and m (1 ≤ n,m ≤ 2⋅10^5) — the length of the given sequence and the required value of the median.

The second line contains an integer sequence a_1, a_2, ..., a_n (1 ≤ a_i ≤ 2⋅10^5).

Output

Print the required number.

Examples

Input

5 4
1 4 5 60 4


Output

8


Input

3 1
1 1 1


Output

6


Input

15 2
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3


Output

97

Note

In the first example, the suitable pairs of indices are: (1, 3), (1, 4), (1, 5), (2, 2), (2, 3), (2, 5), (4, 5) and (5, 5).
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.HashMap;

public class Solution {
    public static void main(String[] args) {
        
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        
        E2 test = new E2();
        test.code(in, out);
        out.close();
    }
    
    static class E2 {
        private int[] A;
        public void code(Scanner in, PrintWriter out) {
            int n = in.nextInt();
            int m = in.nextInt();
            A = new int[n];
            for(int i = 0; i < n; i++) A[i] = in.nextInt();
            out.print(solve(m, n) - solve(m + 1, n));
        }
        
        private long solve(int m, int n) {
            HashMap < Integer, Integer > M = new HashMap <> ();
            int r = 0;
            M.put(0, 1);
            long cnt = 0, ans = 0;
            for(int i = 0; i < n; i++)
            {
                if(A[i] < m)
                {
                    r--;
                    cnt -= (long) M.getOrDefault(r, 0);
                }
                else
                {
                    cnt += (long) M.getOrDefault(r, 0);
                    r++;
                }
                ans += cnt;
                //System.out.println(ans);
                M.put(r, M.getOrDefault(r, 0) + 1);
            }
            return ans;
        }
    }
}