import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.Arrays;
import java.util.StringTokenizer;
/**
* @author 은서파
* @since 2022. 2. 23.
* @see
* @performance 139,036 kb, 430 ms
* @category #
* @memo
*/
public class SWEA_D2_1859_백만장자프로젝트{
static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
static StringBuilder output = new StringBuilder();
static StringTokenizer tokens;
static int T;
static int N;
static int [] map;
public static void main(String[] args) throws IOException {
input = new BufferedReader(new StringReader(src));
T = Integer.parseInt(input.readLine());
for(int t=1; t<=T; t++) {
N = Integer.parseInt(input.readLine());
map = new int[N];
tokens = new StringTokenizer(input.readLine());
for(int i=0; i<N; i++) {
map[i] = Integer.parseInt(tokens.nextToken());
}
//System.out.println(Arrays.toString(map));
// N: 백만, 금액: 10000 --> 천억!!
long profit = 0;
// 뒤에서 부터 생각해보자~~~ -> 최대값에서 작은 값을 계속 빼주는 구조.
int max = 0;
for(int i=N-1; i>=0; i--) {
// 내 뒤로 최대가 있다면 --> 모조건 구매, 이때의 이익은 최대 - 오늘 금액
int today = map[i];
if(max > today) {
profit +=max - today;
}
// 오늘이 더 최대인 상황 --> 최대값 갱신
else {
max = today;
}
}
output.append(String.format("#%d %d%n", t, profit));
}
System.out.println(output);
}
// REMOVE_START
private static String src = "3\n"
+ "3\n"
+ "10 7 6\n"
+ "3\n"
+ "3 5 9\n"
+ "5\n"
+ "1 1 3 1 2";
// REMOVE_END
}