#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
using namespace std;
int main() {
freopen("Text.txt", "r", stdin);
int T;
cin >> T;
for (int t = 1; t <= T; t++) {
int n, m;
cin >> n >> m;
int f0List[101];
int A[101][101];
if (n == 0) {
cout << "#" << t << " " << 0 << " " << 0 << endl;
continue;
}
else {
// Đọc ma trận tiếp xúc
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> A[i][j];
}
}
}
if (m == 0) {
cout << "#" << t << " " << 0 << " " << 0 << endl;
continue;
}
else { // Đọc danh sách F0
for (int i = 0; i < m; i++) {
cin >> f0List[i];
}
}
// Khởi tạo mảng trạng thái
// status[i] = -1: chưa xác định
// status[i] = 0: F0
// status[i] = 1: F1
// status[i] = 2: F2
vector<int> status(n + 1, -1);
// Đánh dấu F0
for (int i = 0; i < m; i++) {
status[f0List[i]] = 0;
}
// Xác định F1
for (int i = 1; i <= n; i++) {
if (status[i] == -1) {
for (int j = 0; j < m; j++) {
int F0 = f0List[j];
if (A[i][F0] == 1) {
status[i] = 1;
break;
}
}
}
}
// Xác định F2
for (int i = 1; i <= n; i++) {
if (status[i] == -1) {
for (int j = 1; j <= n; j++) {
if (status[j] == 1 && A[i][j] == 1) {
status[i] = 2;
break;
}
}
}
}
// Đếm số F1 F2
int countF1 = 0, countF2 = 0;
for (int i = 1; i <= n; i++) {
if (status[i] == 1) countF1++;
else if (status[i] == 2) countF2++;
}
cout << "#" << t << " " << countF1 << " " << countF2 << endl;
}
return 0;
}