#include <bits/stdc++.h>

using namespace std;

struct tr{
    int sum;
    int l;
    int r;
};


pair <int, int> pr[1000007];
int n;
int cuP = 0;
int b[1000007];
tr t[1000007];

void ini(int cu){
    if (cu >= n){
        b[cuP] = cu;
        t[cu].l = cuP;
        t[cu].r = cuP;
        t[cu].sum = 0;
        cuP++;
    }
    else {
        ini(2*cu);
        ini(2*cu + 1);
        t[cu].r = t[2*cu + 1].r;
        t[cu].l = t[2*cu].l;
        t[cu].sum = t[2*cu].sum + t[2*cu + 1].sum;
    }
}

void up(int cu){
    if (cu == 1){
        return;
    }
    cu = cu / 2;
    t[cu].sum = t[2*cu].sum + t[2*cu + 1].sum;
    up(cu);
}

void upd(int in){
    int cu = b[in];
    t[cu].sum++;
    up(cu);
}

int getSum(int cu, int lb, int rb){
    if (lb >= t[cu].r || rb <= t[cu].l){
        return 0;
    }
    if (t[cu].r <= rb && t[cu].l >= lb){
        return t[cu].sum;
    }
    return getSum(2*cu, lb, rb) + getSum(2 * cu + 1, lb, rb);
}

int  s[1000007];

int main()
{
    int te;
    int q;
    cin>>te;
    for (int u = 0;u < te; u++){
        cin>>n>>q;
        cuP = 0;
        n++;
        ini(1);
        for (int i = 0; i < n - 1; i++){
            cin>>s[i];
        }
        pr[0].second = 0;
        pr[0].first = 0;
        for (int i = 1; i <= n - 1; i++){
            if (s[i - 1] == 1){
                pr[i].first = pr[i - 1].first + 100 - q;
            }
            else {
                pr[i].first = pr[i - 1].first - q;
            }
            pr[i].second = i;
            //cout<<pr[i].first<<endl;
        }
        long long re = 0;
        sort(pr, pr + n);
        for (int i = 0; i < n; i++){
            re += getSum(1, 0, pr[i].second);
            upd(pr[i].second);
        }
        cout<<re<<" ";
    }
    return 0;
}
