

package array;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class eightDirArray {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
// 8방 탐색을 위한 방향 정의
int[] dr = {-1,-1,0,1,1,1,0,-1};
int[] dc = { 0, 1,1,1,0,-1,-1,-1};
// 케이스별 처리
for(int o = 1; o <= t; o++){
String[] s = br.readLine().split(" ");
int n = Integer.parseInt(s[0]);
int m = Integer.parseInt(s[1]);
char[][] map = new char[n][m];
boolean[][] map_v = new boolean[n][m];
int sum = 0;
// 배열 입력 받기
for(int i = 0; i < n; i++){
String[] tmp = br.readLine().split(" ");
for(int j = 0; j < m; j++){
map[i][j] = tmp[j].charAt(0);
}
}
// 8방 탐색 수행
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
for(int d = 0; d < 8; d++){
int nr = i + dr[d];
int nc = j + dc[d];
// 8방으로 방문 가능한 좌표인 경우 방문
if(map[i][j] == 'X' && nr >= 0 && nr < n && nc >= 0 && nc < m && !map_v[nr][nc] && map[nr][nc] != 'X'){
sum += Integer.parseInt(String.valueOf(map[nr][nc])); // char -> int 로 변환할 때는 Integer.parseInt(String.valueOf(char s))
map_v[nr][nc] = true; // 방문 처리
}
}
}
}
System.out.println("#" + o + " " + sum);
}
}
}