// بسم الله الرحمن الرحيم
#include <bits/stdc++.h>
using namespace std;
template<typename T> ostream& operator<<(ostream& os, vector<T>& v) { for (auto& i : v) os << i << ' '; return os; }
template<typename T> istream& operator>>(istream& is, vector<T>& v) { for (auto& i : v) is >> i; return is; }
#define FreePalestine ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define endl '\n'
#define int long long
#define ull unsigned long long
#define vi vector<int>
#define vvi vector<vi>
#define pi pair<int, int>
#define all(a) a.begin(), a.end()
#define all_r(a) a.rbegin(), a.rend()
const int N = 302, oo = 2e18, MOD = 1e9+7;
int n, a[N], dp[N][N][N];
int ans(int i = 0, int mx = 0, int mx_2 = 0) {
if (i >= n)
return 1;
int& ret = dp[i][mx][mx_2];
if (~ret)
return ret;
ret = 0;
ret += ans(i+1, mx, mx_2);
if (ret >= MOD)
ret -= MOD;
if (a[i] >= mx_2) {
if (a[i] > mx) {
mx_2 = mx;
mx = a[i];
}
else if (a[i] != mx && a[i] > mx_2) {
mx_2 = a[i];
}
ret += ans(i+1, mx, mx_2);
if (ret >= MOD)
ret -= MOD;
}
return ret;
}
void solve() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
memset(dp, -1, sizeof dp);
cout << ans() << endl;
}
signed main() {
FreePalestine;
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
int t; t = 1;
cin >> t;
while (t--) solve();
return 0;
}
Ly8g2KjYs9mFINin2YTZhNmHINin2YTYsdit2YXZhiDYp9mE2LHYrdmK2YUKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgdmVjdG9yPFQ+JiB2KSB7IGZvciAoYXV0byYgaSA6IHYpIG9zIDw8IGkgPDwgJyAnOyByZXR1cm4gb3M7IH0KdGVtcGxhdGU8dHlwZW5hbWUgVD4gaXN0cmVhbSYgb3BlcmF0b3I+Pihpc3RyZWFtJiBpcywgdmVjdG9yPFQ+JiB2KSB7IGZvciAoYXV0byYgaSA6IHYpIGlzID4+IGk7IHJldHVybiBpczsgfQoKI2RlZmluZSBGcmVlUGFsZXN0aW5lICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCkKCiNkZWZpbmUgZW5kbCAgICAgJ1xuJwojZGVmaW5lIGludCAgICAgIGxvbmcgbG9uZwojZGVmaW5lIHVsbCAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHZpICAgICAgIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdnZpICAgICAgdmVjdG9yPHZpPgojZGVmaW5lIHBpICAgICAgIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgYWxsKGEpICAgYS5iZWdpbigpLCBhLmVuZCgpCiNkZWZpbmUgYWxsX3IoYSkgYS5yYmVnaW4oKSwgYS5yZW5kKCkKCmNvbnN0IGludCBOID0gMzAyLCBvbyA9IDJlMTgsIE1PRCA9IDFlOSs3OwppbnQgbiwgYVtOXSwgZHBbTl1bTl1bTl07CgppbnQgYW5zKGludCBpID0gMCwgaW50IG14ID0gMCwgaW50IG14XzIgPSAwKSB7CiAgICBpZiAoaSA+PSBuKSAKICAgICAgICByZXR1cm4gMTsKCgogICAgaW50JiByZXQgPSBkcFtpXVtteF1bbXhfMl07CgogICAgaWYgKH5yZXQpCiAgICAgICAgcmV0dXJuIHJldDsKCiAgICByZXQgPSAwOwoKICAgIHJldCArPSBhbnMoaSsxLCBteCwgbXhfMik7CiAgICBpZiAocmV0ID49IE1PRCkgCiAgICAgICAgcmV0IC09IE1PRDsKCiAgICBpZiAoYVtpXSA+PSBteF8yKSB7CiAgICAgICAgaWYgKGFbaV0gPiBteCkgewogICAgICAgICAgICBteF8yID0gbXg7CiAgICAgICAgICAgIG14ID0gYVtpXTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYVtpXSAhPSBteCAmJiBhW2ldID4gbXhfMikgewogICAgICAgICAgICBteF8yID0gYVtpXTsKICAgICAgICB9CiAgICAgICAgcmV0ICs9IGFucyhpKzEsIG14LCBteF8yKTsKICAgIAogICAgICAgIGlmIChyZXQgPj0gTU9EKSAKICAgICAgICAgICAgcmV0IC09IE1PRDsKCiAgICB9CgogICAgcmV0dXJuIHJldDsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KICAgIG1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CgogICAgY291dCA8PCBhbnMoKSA8PCBlbmRsOwp9ICAKCgpzaWduZWQgbWFpbigpIHsKICAgRnJlZVBhbGVzdGluZTsKICAgLy8gI2lmbmRlZiBPTkxJTkVfSlVER0UgCiAgIC8vICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOyAKICAgLy8gICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsgCiAgIC8vICNlbmRpZiAKICAgaW50IHQ7IHQgPSAxOwogICBjaW4gPj4gdDsKICAgd2hpbGUgKHQtLSkgc29sdmUoKTsKICAgcmV0dXJuIDA7Cn0=