#include<iostream>
#include<queue>
#include<cstring>
using namespace std;
char map[10000][10000];
int vis[10000][10000];
int m, n;
int sum;
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
queue <int> q;
void bfs(int x, int y)
{
if (vis[x][y] == 1)
return;
vis[x][y] = 1;
q.push(x);
q.push(y);
while (!q.empty())
{
int nn = q.front();
q.pop();
int mm = q.front();
q.pop();
for (int i = 0; i < 4; i++)
{
nn += dx[i];
mm += dy[i];
if (map[nn][mm] == '0' || vis[nn][mm] == 1||nn<=0||nn>m||mm<=0||mm>n)
continue;
vis[nn][mm] = 1;
q.push(nn);
q.push(mm);
}
}
}
int main()
{
cin >> m >> n;
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
cin >> map[i][j];
}
}
for (int i = 1; i <= m; i++)
{
for (int j = 1; j <= n; j++)
{
if (vis[i][j] != 1 && map[i][j] != '0')
{
cout << i << j << endl;
sum++;
bfs(i, j);
}
}
}
cout << sum << endl;
}