#include <bits/stdc++.h>
using namespace std;
 
struct Node {
int x, y, z;
};
 
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
 
 
int T;
cin >> T;
while (T--) {
    int X, Y, Z;
    cin >> X >> Y >> Z;
swap(X,Z );
    // grid[z][x][y] để nhất quán với (i,j,k)
    vector<vector<vector<int>>> grid(Z, vector<vector<int>>(X, vector<int>(Y)));
    for (int k = 0; k < Z; ++k) {
        for (int i = 0; i < X; ++i) {
            string s;
            cin >> s;
            for (int j = 0; j < Y; ++j)
                grid[k][i][j] = s[j] - '0';
        }
    }
 
    vector<vector<vector<bool>>> vis(Z, vector<vector<bool>>(X, vector<bool>(Y, false)));
    int total = 0;
 
    int dx[6] = {1, -1, 0, 0, 0, 0};
    int dy[6] = {0, 0, 1, -1, 0, 0};
    int dz[6] = {0, 0, 0, 0, 1, -1};
 
    for (int k = 0; k < Z; ++k)
        for (int i = 0; i < X; ++i)
            for (int j = 0; j < Y; ++j)
                if (grid[k][i][j] == 1 && !vis[k][i][j]) {
                    // BFS để tìm khối liên thông
                    queue<Node> q;
                    q.push({i, j, k});
                    vis[k][i][j] = true;
 
                    int minx = i, maxx = i;
                    int miny = j, maxy = j;
                    int minz = k, maxz = k;
 
                    while (!q.empty()) {
                        Node cur = q.front();
                        q.pop();
                        for (int d = 0; d < 6; ++d) {
                            int nx = cur.x + dx[d];
                            int ny = cur.y + dy[d];
                            int nz = cur.z + dz[d];
                            if (nx >= 0 && nx < X && ny >= 0 && ny < Y && nz >= 0 && nz < Z) {
                                if (!vis[nz][nx][ny] && grid[nz][nx][ny] == 1) {
                                    vis[nz][nx][ny] = true;
                                    q.push({nx, ny, nz});
                                    minx = min(minx, nx);
                                    maxx = max(maxx, nx);
                                    miny = min(miny, ny);
                                    maxy = max(maxy, ny);
                                    minz = min(minz, nz);
                                    maxz = max(maxz, nz);
                                }
                            }
                        }
                    }
 
                    int a = maxx - minx + 1;
                    int b = maxy - miny + 1;
                    int c = maxz - minz + 1;
                    total += min({a, b, c});
                }
 
    cout << total << "\n";
}
return 0;
 
 
}
 
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CmludCB4LCB5LCB6Owp9OwoKaW50IG1haW4oKSB7Cmlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKY2luLnRpZShudWxscHRyKTsKCgppbnQgVDsKY2luID4+IFQ7CndoaWxlIChULS0pIHsKICAgIGludCBYLCBZLCBaOwogICAgY2luID4+IFggPj4gWSA+PiBaOwpzd2FwKFgsWiApOwogICAgLy8gZ3JpZFt6XVt4XVt5XSDEkeG7gyBuaOG6pXQgcXXDoW4gduG7m2kgKGksaixrKQogICAgdmVjdG9yPHZlY3Rvcjx2ZWN0b3I8aW50Pj4+IGdyaWQoWiwgdmVjdG9yPHZlY3RvcjxpbnQ+PihYLCB2ZWN0b3I8aW50PihZKSkpOwogICAgZm9yIChpbnQgayA9IDA7IGsgPCBaOyArK2spIHsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFg7ICsraSkgewogICAgICAgICAgICBzdHJpbmcgczsKICAgICAgICAgICAgY2luID4+IHM7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgWTsgKytqKQogICAgICAgICAgICAgICAgZ3JpZFtrXVtpXVtqXSA9IHNbal0gLSAnMCc7CiAgICAgICAgfQogICAgfQoKICAgIHZlY3Rvcjx2ZWN0b3I8dmVjdG9yPGJvb2w+Pj4gdmlzKFosIHZlY3Rvcjx2ZWN0b3I8Ym9vbD4+KFgsIHZlY3Rvcjxib29sPihZLCBmYWxzZSkpKTsKICAgIGludCB0b3RhbCA9IDA7CgogICAgaW50IGR4WzZdID0gezEsIC0xLCAwLCAwLCAwLCAwfTsKICAgIGludCBkeVs2XSA9IHswLCAwLCAxLCAtMSwgMCwgMH07CiAgICBpbnQgZHpbNl0gPSB7MCwgMCwgMCwgMCwgMSwgLTF9OwoKICAgIGZvciAoaW50IGsgPSAwOyBrIDwgWjsgKytrKQogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgWDsgKytpKQogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IFk7ICsraikKICAgICAgICAgICAgICAgIGlmIChncmlkW2tdW2ldW2pdID09IDEgJiYgIXZpc1trXVtpXVtqXSkgewogICAgICAgICAgICAgICAgICAgIC8vIEJGUyDEkeG7gyB0w6xtIGto4buRaSBsacOqbiB0aMO0bmcKICAgICAgICAgICAgICAgICAgICBxdWV1ZTxOb2RlPiBxOwogICAgICAgICAgICAgICAgICAgIHEucHVzaCh7aSwgaiwga30pOwogICAgICAgICAgICAgICAgICAgIHZpc1trXVtpXVtqXSA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGludCBtaW54ID0gaSwgbWF4eCA9IGk7CiAgICAgICAgICAgICAgICAgICAgaW50IG1pbnkgPSBqLCBtYXh5ID0gajsKICAgICAgICAgICAgICAgICAgICBpbnQgbWlueiA9IGssIG1heHogPSBrOwoKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBOb2RlIGN1ciA9IHEuZnJvbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcS5wb3AoKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgZCA9IDA7IGQgPCA2OyArK2QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBueCA9IGN1ci54ICsgZHhbZF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnkgPSBjdXIueSArIGR5W2RdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG56ID0gY3VyLnogKyBkeltkXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChueCA+PSAwICYmIG54IDwgWCAmJiBueSA+PSAwICYmIG55IDwgWSAmJiBueiA+PSAwICYmIG56IDwgWikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdmlzW256XVtueF1bbnldICYmIGdyaWRbbnpdW254XVtueV0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNbbnpdW254XVtueV0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxLnB1c2goe254LCBueSwgbnp9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlueCA9IG1pbihtaW54LCBueCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHggPSBtYXgobWF4eCwgbngpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW55ID0gbWluKG1pbnksIG55KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4eSA9IG1heChtYXh5LCBueSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnogPSBtaW4obWlueiwgbnopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXh6ID0gbWF4KG1heHosIG56KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGludCBhID0gbWF4eCAtIG1pbnggKyAxOwogICAgICAgICAgICAgICAgICAgIGludCBiID0gbWF4eSAtIG1pbnkgKyAxOwogICAgICAgICAgICAgICAgICAgIGludCBjID0gbWF4eiAtIG1pbnogKyAxOwogICAgICAgICAgICAgICAgICAgIHRvdGFsICs9IG1pbih7YSwgYiwgY30pOwogICAgICAgICAgICAgICAgfQoKICAgIGNvdXQgPDwgdG90YWwgPDwgIlxuIjsKfQpyZXR1cm4gMDsKCgp9Cg==