#include <bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node *left, *right;
node(int data__){
data = data__;
left = right = NULL;
}
};
node* make_tree(vector<int>& v){
node *head = NULL, *ptr = NULL;
int n = v.size();
/*for(int i = 0; i < n; i++){
cout << v[i] << " ";
}*/
if(n == 0){
return NULL;
}
queue<node*> q;
head = new node(v[0]);
q.push(head);
int i = 1;
while(!q.empty() and i < n){
node* x = q.front();
q.pop();
x -> left = new node(v[i++]);
if(i < n){
x -> right = new node(v[i++]);
//i++;
}
q.push(x -> left);
q.push(x -> right);
}
return head;
}
int sum(node* root){
if(root == NULL){
return 0;
}
return root -> data + sum(root -> left) + sum(root -> right);
}
int sumk(node *root, int k){
if(root == NULL)
return 0;
int ans = 0;
if(sum(root) == k){
ans = 1;
}
int x = sumk(root -> left, k);
int y = sumk(root -> right, k);
return ans + x + y;
}
int main(){
int t;
cin >> t;
while(t--){
string ss, x;
cin.ignore();
getline(cin, ss);
stringstream s(ss);
vector<int> v;
while(s >> x){
//cout << x << ",";
v.push_back(stoi(x));
}
node* root = make_tree(v);
int k;
cin >> k;
int y = sumk(root, k);
cout << y ;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIG5vZGV7CiAgICBwdWJsaWM6CiAgICBpbnQgZGF0YTsKICAgIG5vZGUgKmxlZnQsICpyaWdodDsKICAgIG5vZGUoaW50IGRhdGFfXyl7CiAgICAgICAgZGF0YSA9IGRhdGFfXzsKICAgICAgICBsZWZ0ID0gcmlnaHQgPSBOVUxMOwogICAgfQp9Owpub2RlKiBtYWtlX3RyZWUodmVjdG9yPGludD4mIHYpewogICAgbm9kZSAqaGVhZCA9IE5VTEwsICpwdHIgPSBOVUxMOwogICAgaW50IG4gPSB2LnNpemUoKTsKICAgIC8qZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAgICAgY291dCA8PCB2W2ldIDw8ICIgIjsKICAgIH0qLwogICAgaWYobiA9PSAwKXsKICAgICAgICByZXR1cm4gTlVMTDsKICAgIH0KICAgIHF1ZXVlPG5vZGUqPiBxOwogICAgaGVhZCA9IG5ldyBub2RlKHZbMF0pOwogICAgcS5wdXNoKGhlYWQpOwogICAgaW50IGkgPSAxOwogICAgd2hpbGUoIXEuZW1wdHkoKSBhbmQgaSA8IG4pewogICAgICAgIG5vZGUqIHggPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICB4IC0+IGxlZnQgPSBuZXcgbm9kZSh2W2krK10pOwogICAgICAgIGlmKGkgPCBuKXsKICAgICAgICAgICAgeCAtPiByaWdodCA9IG5ldyBub2RlKHZbaSsrXSk7CiAgICAgICAgICAgIC8vaSsrOwogICAgICAgIH0KICAgICAgICBxLnB1c2goeCAtPiBsZWZ0KTsKICAgICAgICBxLnB1c2goeCAtPiByaWdodCk7CiAgICB9CiAgICByZXR1cm4gaGVhZDsKfQppbnQgc3VtKG5vZGUqIHJvb3QpewogICAgaWYocm9vdCA9PSBOVUxMKXsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIHJldHVybiByb290IC0+IGRhdGEgKyBzdW0ocm9vdCAtPiBsZWZ0KSArIHN1bShyb290IC0+IHJpZ2h0KTsKfQppbnQgc3Vtayhub2RlICpyb290LCBpbnQgayl7CiAgICBpZihyb290ID09IE5VTEwpCiAgICAgICAgcmV0dXJuIDA7CiAgICBpbnQgYW5zID0gMDsKICAgIGlmKHN1bShyb290KSA9PSBrKXsKICAgICAgICBhbnMgPSAxOwogICAgfQogICAgaW50IHggPSBzdW1rKHJvb3QgLT4gbGVmdCwgayk7CiAgICBpbnQgeSA9IHN1bWsocm9vdCAtPiByaWdodCwgayk7CiAgICByZXR1cm4gYW5zICsgeCArIHk7Cn0KaW50IG1haW4oKXsKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHN0cmluZyBzcywgeDsKICAgICAgICBjaW4uaWdub3JlKCk7CiAgICAgICAgZ2V0bGluZShjaW4sIHNzKTsKICAgICAgICBzdHJpbmdzdHJlYW0gcyhzcyk7CiAgICAgICAgdmVjdG9yPGludD4gdjsKICAgICAgICB3aGlsZShzID4+IHgpewogICAgICAgICAgICAvL2NvdXQgPDwgeCA8PCAiLCI7CiAgICAgICAgICAgIHYucHVzaF9iYWNrKHN0b2koeCkpOwogICAgICAgIH0KICAgICAgICBub2RlKiByb290ID0gbWFrZV90cmVlKHYpOwogICAgICAgIGludCBrOwogICAgICAgIGNpbiA+PiBrOwogICAgICAgIGludCB5ID0gc3Vtayhyb290LCBrKTsKICAgICAgICBjb3V0IDw8IHkgOwogICAgfQpyZXR1cm4gMDsKfQ==