import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();//表示数据组数
int ans=0;
for(int i=0;i<T;i++){
int n = sc.nextInt();//n种不同面额的货币
int[] a = new int[n];//货币面额数组
for(int j=0;j<n;j++){
a[j] = sc.nextInt();
}
Arrays.sort(a);
//将面额数组中能被其他面额表示出来的删掉,剩下的个数即为答案
//背包问题:a[1..i-1]能否拼出a[i]
int count = huoBiXiTongII(n,a[n-1],a);
System.out.println(count);
}
}
public static int huoBiXiTongII(int n,int m,int[] a){
//背包问题:n个物品,m容量,ai可用多次,求有多少种组合加起来是m
//f[i]表示有多少种组合能拼出容量i
int[] f = new int[m+1];
f[0]=1;//有1种组合能拼出0(什么都不选),f[1]=...=f[m]=0
int i,j;
for(i=1;i<=m;++i){
for(j=0;j<n;j++){
//如果i<a[j],则对应的f[i-a[j]]不加入f[i]
if(i>=a[j]){
f[i] += f[i-a[j]];
}
}
}
int count = 0;
for(i=0;i<a.length;i++){
//面额只有一种组成方式,即不能被其他面额表示出
if(f[a[i]] == 1){
++count;
}
}
return count;
}
}