import java.io.*;
import java.math.*;
import java.util.*;
class U {
static boolean debug = false;
static void out(String s) { System.out.println(s); }
static void out_(String s) { System.out.print(s); }
static void d(String s) { if (debug) out(s); }
static void d_(String s) { if (debug) out_(s); }
static void azzert(boolean b) { if (!b) throw new RuntimeException(); }
}
public class B {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
int P = console.nextInt();
for (int p=0; p < P; p++) {
int K = console.nextInt();
int[] ns = new int[12];
for(int i = 0; i < 12; i++) {
ns[i] = console.nextInt();
}
int numIslands = 0;
LinkedList<Integer> stack = new LinkedList<Integer>();
stack.push(ns[0]);
for(int i = 1; i < 12; i++) {
int n = ns[i];
U.d("n:" + n);
if (n == stack.peek()) {
// do nothing
} else if (n > stack.peek()) {
// always add 1 with any increase
numIslands++;
U.d("numIslands++");
stack.push(n);
} else if (n < stack.peek()){
// climbing down!
// keep on closing parentheses until we are at least at the same level
while(n < stack.peek()) {
stack.pop();
}
if(n > stack.peek()) {
numIslands ++;
stack.push(n);
}
}
}
U.out(K + " " + numIslands);
}
}
}