#include<iostream>

using namespace std;

int main(){
	long long h,n;
	cin>>h>>n;
	long long niz[h][n];
	long long tNiz[n];
	for(long long i=0;i<n;i++){
		tNiz[i]=1;
	}
	for(long long i=0;i<h;i++){
		for(long long j=0;j<n;j++){
			cin>>niz[i][j];
		}
	}
	
	//analiziranje redova kamenja RADI
	for(long long i=0;i<h;i++){
		for(long long j=0;j<n;j++){
			if(niz[i][j]==0&&niz[i][j+1]==0){
				niz[i][j]=-2;
				niz[i][j+1]=-1;
				for(long long k=j+2;k<n;k++){
					if(niz[i][k]==0){
						niz[i][j]--;
						niz[i][k]=-1;
					}
					else{
						break;
					}
				}
				break;
			}
		}
	}
	////////////////////
	
	for(long long i=0;i<h;i++){
		
		for(long long j=0;j<n;j++){
			if(niz[i][j]==0){//ova mala je ko kaameeen
				if(j==0){//uz levu ivicu
					tNiz[j+1]+=tNiz[j];
					tNiz[j]=0;
				}
				else if(j==(n-1)){//uz desnu ivicu
					tNiz[j-1]+=tNiz[j];
					tNiz[j]=0;
				}
				else{
					if(tNiz[j]%2==0){//kamen,sve ok deli se na dva dela
						tNiz[j+1]+=tNiz[j]/2;
						tNiz[j-1]+=tNiz[j]/2;
						tNiz[j]=0;
					}
					else{
						//za vise kamenja u istom redu
						
						if((i+1)%2==0){//red je paran
							
							tNiz[j+1]+=(tNiz[j]/2+1);
							tNiz[j-1]+=tNiz[j]/2;
							tNiz[j]=0;
						}
						else{//red je neparan 
							tNiz[j-1]+=(tNiz[j]/2+1);
							tNiz[j+1]+=tNiz[j]/2;
							tNiz[j]=0;
						}
					}
				}
			}
			//ZA NIZOVE KAMENJA
			if(niz[i][j]<0){
				long long t=niz[i][j]*(-1);
				long long x=j,y=j+t-1,zbir=0;
				for(long long k=x;k<=y;k++){
					zbir+=tNiz[k];
					tNiz[k]=0;
				}
				/////////
				if(x==0){//uz levu ivicu
					tNiz[y+1]+=zbir;
				}
				else if(y==(n-1)){//uz desnu ivicu
					tNiz[x-1]+=zbir;
				}
				else{
				
					if(zbir%2==0){//kamen,sve ok deli se na dva dela
							tNiz[x-1]+=zbir/2;
							tNiz[y+1]+=zbir/2;
						}
					else{
						//za vise kamenja u istom redu
						
						
						if((i+1)%2==0){//red je paran
							tNiz[y+1]+=(zbir/2+1);
							tNiz[x-1]+=zbir/2;
						}
						else{//red je neparan 
							tNiz[x-1]+=(zbir/2+1);
							tNiz[y+1]+=zbir/2;
						}
					}
				}
			//////////
				continue;
			}
			//////////////////////	
		}
	}
	for(long long i=0;i<n;i++){
		cout<<tNiz[i]<<" ";
		}
	return 1;
}