#include <bits/stdc++.h>
using namespace std;
int N, M;
int B[1605][1605];
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
int S[1605][1605];
int belong[1605][1605], cnt = 0;
int erased[1605][1605];
int num[1605 * 1605];
void bfs_sun(int x, int y) {
  belong[x][y] = ++cnt;
  queue<int> q, w;
  q.push(x);
  w.push(y);
  while (q.size()) {
    x = q.front(), y = w.front();
    q.pop(), w.pop();
    for (int i = 0; i < 4; ++i) {
      int a = x + dx[i], b = y + dy[i];
      if (a < 1 || a > N || b < 1 || b > M || !B[a][b] || belong[a][b])
        continue;
      belong[a][b] = cnt;
      q.push(a);
      w.push(b);
    }
  }
}
int sum(int x, int y, int up) {
  if (up)
    for (int i = 0; i < 4; ++i)
      for (int j = 0; j < 4; ++j) {
        erased[x + i][y + j] = 1;
      }
  return S[x + 3][y + 3] - S[x - 1][y + 3] - S[x + 3][y - 1] + S[x - 1][y - 1];
}
void erase_sun() {
  for (int i = 1; i + 3 <= N; ++i)
    for (int j = 1; j + 3 <= M; ++j)
      if (sum(i, j, 0) == 16) sum(i, j, 1);
}
void bfs_ray(int x, int y) {
  int vis = 0;
  erased[x][y] = 1;
  queue<int> q, w;
  q.push(x);
  w.push(y);
  while (q.size()) {
    x = q.front(), y = w.front();
    q.pop(), w.pop();
    ++vis;
    for (int i = 0; i < 4; ++i) {
      int a = x + dx[i], b = y + dy[i];
      if (a < 1 || a > N || b < 1 || b > M || !B[a][b] || erased[a][b])
        continue;
      erased[a][b] = 1;
      q.push(a);
      w.push(b);
    }
  }
  if (vis >= 5) ++num[belong[x][y]];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> N >> M;
  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j <= M; ++j) {
      cin >> B[i][j];
      S[i][j] = B[i][j] + S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1];
    }
  }
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= M; ++j)
      if (!belong[i][j] && B[i][j]) bfs_sun(i, j);
  erase_sun();
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= M; ++j)
      if (belong[i][j] && !erased[i][j]) bfs_ray(i, j);
  sort(num + 1, num + cnt + 1);
  printf("%d\n", cnt);
  for (int i = 1; i <= cnt; ++i) printf("%d ", num[i]);
  printf("\n");
}
