import java.util.*;
class Codechef {
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in); int t = sc.nextInt();
while (t-- > 0) {
int n = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) a[i] = sc.nextInt();
System.
out.
println(countValidSequences
(a, n
)); }
}
static int countValidSequences(int[] a, int n) {
int validCount = 0;
if (simulate(a, n, 'L')) validCount++;
if (simulate(a, n, 'R')) validCount++;
return validCount;
}
static boolean simulate(int[] a, int n, char firstCape) {
char[] capes = new char[n];
capes[0] = firstCape;
char lastCape = firstCape;
for (int i = 1; i < n; i++) {
int diff = a[i] - a[i - 1];
if (Math.
abs(diff
) > 1) return false;
if (diff == 1) {
if (lastCape != 'L') return false;
capes[i] = 'L';
} else if (diff == -1) {
if (lastCape != 'R') return false;
capes[i] = 'R';
} else {
capes[i] = (lastCape == 'L') ? 'R' : 'L';
}
lastCape = capes[i];
}
int[] prefixL = new int[n];
int[] suffixR = new int[n];
prefixL[0] = (capes[0] == 'L') ? 1 : 0;
for (int i = 1; i < n; i++)
prefixL[i] = prefixL[i - 1] + ((capes[i] == 'L') ? 1 : 0);
suffixR[n - 1] = (capes[n - 1] == 'R') ? 1 : 0;
for (int i = n - 2; i >= 0; i--)
suffixR[i] = suffixR[i + 1] + ((capes[i] == 'R') ? 1 : 0);
for (int i = 0; i < n; i++) {
int actual = prefixL[i] + suffixR[i];
if (actual != a[i]) return false;
}
return true;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKY2xhc3MgQ29kZWNoZWYgewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIGludCB0ID0gc2MubmV4dEludCgpOyAKCiAgICAgICAgd2hpbGUgKHQtLSA+IDApIHsKICAgICAgICAgICAgaW50IG4gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgICAgIGludFtdIGEgPSBuZXcgaW50W25dOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgYVtpXSA9IHNjLm5leHRJbnQoKTsKCiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb3VudFZhbGlkU2VxdWVuY2VzKGEsIG4pKTsKICAgICAgICB9CiAgICB9CgogICAgc3RhdGljIGludCBjb3VudFZhbGlkU2VxdWVuY2VzKGludFtdIGEsIGludCBuKSB7CiAgICAgICAgaW50IHZhbGlkQ291bnQgPSAwOwoKICAgICAgICBpZiAoc2ltdWxhdGUoYSwgbiwgJ0wnKSkgdmFsaWRDb3VudCsrOwogICAgICAgIGlmIChzaW11bGF0ZShhLCBuLCAnUicpKSB2YWxpZENvdW50Kys7CgogICAgICAgIHJldHVybiB2YWxpZENvdW50OwogICAgfQoKICAgIHN0YXRpYyBib29sZWFuIHNpbXVsYXRlKGludFtdIGEsIGludCBuLCBjaGFyIGZpcnN0Q2FwZSkgewogICAgICAgIGNoYXJbXSBjYXBlcyA9IG5ldyBjaGFyW25dOwogICAgICAgIGNhcGVzWzBdID0gZmlyc3RDYXBlOwogICAgICAgIGNoYXIgbGFzdENhcGUgPSBmaXJzdENhcGU7CgogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGludCBkaWZmID0gYVtpXSAtIGFbaSAtIDFdOwoKICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRpZmYpID4gMSkgcmV0dXJuIGZhbHNlOwoKICAgICAgICAgICAgaWYgKGRpZmYgPT0gMSkgewogICAgICAgICAgICAgICAgaWYgKGxhc3RDYXBlICE9ICdMJykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgY2FwZXNbaV0gPSAnTCc7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlmZiA9PSAtMSkgewogICAgICAgICAgICAgICAgaWYgKGxhc3RDYXBlICE9ICdSJykgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgY2FwZXNbaV0gPSAnUic7CiAgICAgICAgICAgIH0gZWxzZSB7IAogICAgICAgICAgICAgICAgY2FwZXNbaV0gPSAobGFzdENhcGUgPT0gJ0wnKSA/ICdSJyA6ICdMJzsgCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxhc3RDYXBlID0gY2FwZXNbaV07CiAgICAgICAgfQoKICAgICAgICBpbnRbXSBwcmVmaXhMID0gbmV3IGludFtuXTsKICAgICAgICBpbnRbXSBzdWZmaXhSID0gbmV3IGludFtuXTsKCiAgICAgICAgcHJlZml4TFswXSA9IChjYXBlc1swXSA9PSAnTCcpID8gMSA6IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuOyBpKyspCiAgICAgICAgICAgIHByZWZpeExbaV0gPSBwcmVmaXhMW2kgLSAxXSArICgoY2FwZXNbaV0gPT0gJ0wnKSA/IDEgOiAwKTsKCiAgICAgICAgc3VmZml4UltuIC0gMV0gPSAoY2FwZXNbbiAtIDFdID09ICdSJykgPyAxIDogMDsKICAgICAgICBmb3IgKGludCBpID0gbiAtIDI7IGkgPj0gMDsgaS0tKQogICAgICAgICAgICBzdWZmaXhSW2ldID0gc3VmZml4UltpICsgMV0gKyAoKGNhcGVzW2ldID09ICdSJykgPyAxIDogMCk7CgogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGludCBhY3R1YWwgPSBwcmVmaXhMW2ldICsgc3VmZml4UltpXTsKICAgICAgICAgICAgaWYgKGFjdHVhbCAhPSBhW2ldKSByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQo=