#include <bits/stdc++.h>
using namespace std;
int n, m, Bcnt;
char st[510][510];
int dx[8] = {0, 0, 1, -1, -1, -1, 1, 1};
int dy[8] = {1, -1, 0, 0, 1, -1, 1, -1};
int g[510][510];
int hashp[110000];
bool check(int x, int y) {
  if (x <= 0 || x > n) return false;
  if (y <= 0 || y > m) return false;
  if (st[x][y] == '0') return false;
  return true;
}
bool solve(int x, int y, int len) {
  int i, j;
  int x0 = x + len - 1, y0 = y + len - 1;
  if (x0 > n || y0 > m) return false;
  for (i = x; i <= x0; i++)
    if (!check(i, y) || !check(i, y0)) return false;
  for (i = y; i <= y0; i++)
    if (!check(x, i) || !check(x0, i)) return false;
  ++Bcnt;
  for (i = x; i <= x0; i++) g[i][y] = g[i][y0] = Bcnt;
  for (i = y; i <= y0; i++) g[x][i] = g[x0][i] = Bcnt;
  return true;
}
bool handle(int x, int y, int len) {
  int i, j;
  int x0 = x + len * 2 - 2;
  if (x0 > n) return false;
  for (i = 0; i < len; i++) {
    if (!check(x + i, y + i) || !check(x + i, y - i)) return false;
    if (!check(x0 - i, y + i) || !check(x0 - i, y - i)) return false;
  }
  ++Bcnt;
  for (i = 0; i < len; i++) {
    g[x + i][y + i] = Bcnt;
    g[x + i][y - i] = Bcnt;
    g[x0 - i][y + i] = Bcnt;
    g[x0 - i][y - i] = Bcnt;
  }
  return true;
}
void Init() {
  int i, j;
  for (i = 0; i <= Bcnt; i++) hashp[i] = 0;
  for (i = 0; i <= n; i++)
    for (j = 0; j <= m; j++) g[i][j] = 0;
  Bcnt = 0;
}
void getans() {
  int i, j, k;
  for (i = 1; i <= Bcnt; i++) hashp[i] = 1;
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      if (g[i][j])
        for (k = 0; k < 8; k++) {
          int x = i + dx[k];
          int y = j + dy[k];
          if (!check(x, y)) continue;
          if (g[x][y] != g[i][j] && st[x][y] == '1') {
            hashp[g[i][j]] = 0;
            break;
          }
        }
  int ans = 0;
  for (i = 1; i <= Bcnt; i++)
    if (hashp[i]) ans++;
  printf("%d\n", ans);
}
int main() {
  int i, j, l;
  int T, len;
  scanf("%d", &T);
  while (T--) {
    Init();
    scanf("%d%d", &n, &m);
    for (i = 1; i <= n; i++) scanf("%s", st[i] + 1);
    len = min(n, m);
    for (i = 1; i <= n; i++)
      for (j = 1; j <= m; j++)
        if (!g[i][j] && st[i][j] == '1')
          for (l = 2; l <= len; l++)
            if (solve(i, j, l) || handle(i, j, l)) break;
    getans();
  }
  return 0;
}
