#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#define lli long long int
#define MOD 1000000007
using namespace std;
lli power(lli a, lli b)
{
if (b == 0)
return 1;
if (b == 1)
return a;
else {
lli temp;
temp = power(a,b/2);
temp = (temp * temp) % MOD;
if (b & 1)
return((temp * a) % MOD);
else
return temp;
}
}
int main() {
// your code goes here
lli tcase,d,n,i,j,k,max,min,ans,alop,temp;
scanf("%lld", &tcase);
while (tcase--) {
scanf("%lld", &n);
lli a[n+1], s[101];
ans = 0;
max = 0;
for (i = 1; i <= n; ++i) {
scanf("%lld", &a[i]);
if (a[i] > max)
max = a[i];
if (i == 1)
min = a[i];
else if (a[i] < min)
min = a[i];
}
ans = 0;
for (d = min-max; d <= max-min; ++d) {
memset(s, 0, sizeof(s));
temp = 0;
for (i = 1; i <=n; ++i) {
alop = 0;
if (a[i] -d >= min && a[i]-d <= max)
alop = s[a[i]-d];
++alop;
s[a[i]] = (s[a[i]] + alop%MOD)%MOD;
temp = (temp + alop%MOD)%MOD;
}
temp = temp-n;
ans = (ans + temp) % MOD;
}
ans = (ans + n%MOD)%MOD;
ans = ((lli)power(2,n) % MOD)-1-ans;
printf("%lld\n", ans);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RyaW5nPgojZGVmaW5lIGxsaSBsb25nIGxvbmcgaW50CiNkZWZpbmUgTU9EIDEwMDAwMDAwMDcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxsaSBwb3dlcihsbGkgYSwgbGxpIGIpCnsKCWlmIChiID09IDApCgkJcmV0dXJuIDE7CglpZiAoYiA9PSAxKQoJCXJldHVybiBhOwoJZWxzZSB7CgkJbGxpIHRlbXA7CgkJCgkJdGVtcCA9IHBvd2VyKGEsYi8yKTsKCQoJCXRlbXAgPSAodGVtcCAqIHRlbXApICUgTU9EOwkKCQoJCWlmIChiICYgMSkKCQkJcmV0dXJuKCh0ZW1wICogYSkgJSBNT0QpOwoJCWVsc2UKCQkJcmV0dXJuIHRlbXA7CgkJfQoJfQoJCQppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWxsaSB0Y2FzZSxkLG4saSxqLGssbWF4LG1pbixhbnMsYWxvcCx0ZW1wOwoJCglzY2FuZigiJWxsZCIsICZ0Y2FzZSk7CgkKCXdoaWxlICh0Y2FzZS0tKSB7CgkJc2NhbmYoIiVsbGQiLCAmbik7CgkJCgkJbGxpIGFbbisxXSwgc1sxMDFdOwoJCWFucyA9IDA7CgkJbWF4ID0gMDsKCQkKCQlmb3IgKGkgPSAxOyBpIDw9IG47ICsraSkgewoJCQlzY2FuZigiJWxsZCIsICZhW2ldKTsKCQkJaWYgKGFbaV0gPiBtYXgpCgkJCQltYXggPSBhW2ldOwoJCQlpZiAoaSA9PSAxKQoJCQkJbWluID0gYVtpXTsKCQkJZWxzZSBpZiAoYVtpXSA8IG1pbikKCQkJCW1pbiA9IGFbaV07CgkJfQoJCQoJCWFucyA9IDA7CgoJCWZvciAoZCA9IG1pbi1tYXg7IGQgPD0gbWF4LW1pbjsgKytkKSB7CgkJCW1lbXNldChzLCAwLCBzaXplb2YocykpOwoJCQl0ZW1wID0gMDsKCQkJCgkJCWZvciAoaSA9IDE7IGkgPD1uOyArK2kpIHsKCQkJCWFsb3AgPSAwOwoJCQkJaWYgKGFbaV0gLWQgPj0gbWluICYmIGFbaV0tZCA8PSBtYXgpCgkJCQkJYWxvcCA9IHNbYVtpXS1kXTsKCQkJCSsrYWxvcDsKCQkJCXNbYVtpXV0gPSAoc1thW2ldXSArIGFsb3AlTU9EKSVNT0Q7CgkJCQl0ZW1wID0gKHRlbXAgKyBhbG9wJU1PRCklTU9EOwoJCQl9CgkJCQoJCQl0ZW1wID0gdGVtcC1uOwoJCQlhbnMgPSAoYW5zICsgdGVtcCkgJSBNT0Q7CgkJCgkJfQoJCWFucyA9IChhbnMgKyBuJU1PRCklTU9EOwoJCWFucyA9ICgobGxpKXBvd2VyKDIsbikgJSBNT0QpLTEtYW5zOwoJCXByaW50ZigiJWxsZFxuIiwgYW5zKTsKCX0KCQkJCglyZXR1cm4gMDsKfQ==
MSAxMDAgMjMgMjEgMzIgNCA1NCA2NSAyIDIgMSA1IDYgNzcgNzcgNTQgMSAzIDYgOTcgOTUgMjIgNDQgNjMgMjMgMjEgMzIgNCA1NCA2NSAyIDIgMSA1IDYgNzcgNzcgNTQgMSAzIDYgOTcgOTUgMjIgNDQgNjMgMzQgNTQgMTIgNTQgODggNjggMjMgMjEgMzIgNCA1NCA2NSAyIDIgMSA1IDYgNzcgNzcgNTQgMSAzIDYgOTcgOTUgMjIgNDQgNjMgMjMgMjEgMzIgNCA1NCA2NSAyIDIgMSA1IDYgNzcgNzcgNTQgMSAzIDYgOTcgOTUgMjIgNDQgNjMgMzQgNTQgMTIgNTQgODggNjg=
1 100 23 21 32 4 54 65 2 2 1 5 6 77 77 54 1 3 6 97 95 22 44 63 23 21 32 4 54 65 2 2 1 5 6 77 77 54 1 3 6 97 95 22 44 63 34 54 12 54 88 68 23 21 32 4 54 65 2 2 1 5 6 77 77 54 1 3 6 97 95 22 44 63 23 21 32 4 54 65 2 2 1 5 6 77 77 54 1 3 6 97 95 22 44 63 34 54 12 54 88 68