#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); i++) using ll = long long; using vll = vector; using vi = vector; using vvi = vector>; using vvll = vector>; const ll inf = 1e16; const ll md = 1000000007; bool a[3005][3005]; int h,w; void bfs(int i,int j){ vector> stack; stack.emplace_back(i,j); while(stack.size()){ i=stack.back().first; j=stack.back().second; stack.pop_back(); rep(ij,2) rep(pm,2){ int ni=i+(pm*2-1)*ij; int nj=j+(pm*2-1)*(1-ij); if(ni<0 || nj<0 || ni>=h || nj>=w) continue; if(a[ni][nj]==false) continue; a[ni][nj]=false; stack.emplace_back(ni,nj); } } } int main() { cin>>h>>w; rep(i,h) rep(j,w){ int aij; cin>>aij; a[i][j]=(aij==1); } int ans=0; rep(i,h) rep(j,w){ if(a[i][j]==false) continue; a[i][j]=false; bfs(i,j); ans++; } cout<