package vodopad;

import java.util.Arrays;
import java.util.Scanner;


public class Vodopad {

    
    public static void main(String[] args) {
      
        Scanner sc = new Scanner(System.in);
        
        int visina = sc.nextInt();
        int sirina = sc.nextInt();
        int[] voda = new int[sirina];
        int[][] vodopad = new int[visina][sirina];
        
        for (int i = 0; i < visina; i++) {
            for (int j = 0; j < sirina; j++) {
                vodopad[i][j] = sc.nextInt();
            }
        }
        
        for (int i = 0; i < sirina; i++) {
            voda[i] = 1;
        }
        
        for (int i = 0; i < visina; i++) {
             for (int j = 0; j < sirina; j++) {
                if (jeStena(i,j,vodopad)) {
                    if (jeIvicaLevo(j)) {
                        if (!stenaDesno(i, j, vodopad)) {
                            voda[j+1] += voda[j];
                            voda[j] = 0;
                        }
                        
                        
                    }
                    else if (jeIvicaDesno(j,sirina))
                    {
                        if (!stenaLevo(i,j,vodopad)) {
                            voda[j-1] += voda[j];
                            voda[j]=0;
                        }
                        
                    }
                    else if (!stenaLevo(i,j,vodopad) && !stenaDesno(i,j,vodopad)) {
                        if (voda[j] %2 == 0) {
                            voda[j-1] += voda[j]/2;
                            voda[j+1] += voda[j]/2;
                            voda[j] = 0;
                        }
                        else  {
                            voda[j-1] += (int) Math.floor((double)voda[j]/2);
                            voda[j+1] += (int) Math.floor((double)voda[j]/2);
                            if ((i+1)%2 == 0) {
                                voda[j+1] += 1;
                            }
                            else{voda[j-1]+= 1; }
                            voda[j] = 0;
                        }
                        
                    }
                    else if (stenaDesno(i,j,vodopad)) {
                        int steneUBloku = 2;
                        int vodaUBloku = voda[j] + voda[j+1];
                        boolean blokDoIvice = false;
                        voda[j]=0;
                        voda[j+1]=0;
                        
                        for (int k = j+2; k < sirina; k++) {
                            if (jeStena(i, k, vodopad)) {
                                steneUBloku++;
                                vodaUBloku += voda[k];
                                voda[k] = 0;
                            }
                                                        
                            else break;
                            if (k==sirina-1) {
                                blokDoIvice = true;
                            }
                        }
                        if (!blokDoIvice) {
                                                   
                            if (vodaUBloku %2 == 0) {
                                voda[j-1] += vodaUBloku/2;
                                voda[j+steneUBloku] += vodaUBloku/2;
                                 voda[j] = 0;
                            }
                            else  {
                                voda[j-1] += (int) Math.floor((double)vodaUBloku/2);
                                voda[j+steneUBloku] += (int) Math.floor((double)vodaUBloku/2);
                                if ((i+1)%2 == 0) {
                                    voda[j+steneUBloku] += 1;
                                }
                                else{voda[j-1]+= 1; }
                                voda[j] = 0;
                            }
                        }
                        
                        else {
                        voda[j-1] += vodaUBloku;
                        }
                        j+=steneUBloku-1;
                    }
                    
                    
                    
                }
            }
        System.out.println(Arrays.toString(voda));
        }
        System.out.println(Arrays.toString(voda));
        
        
    }
    public static boolean stenaLevo(int i,int j, int[][] vodopad)
    {
        j--;
        return jeStena(i,j,vodopad);
    }
    
    public static boolean stenaDesno(int i, int j, int[][] vodopad)
    {   j++;
        return jeStena(i,j,vodopad);
    }
    public static boolean jeStena(int i,int j, int[][] vodopad)
    {
        if (vodopad[i][j] == 0) {
            return true;
        }
        return false;
    }
    public static boolean jeIvicaLevo(int j)
    {
        if (j==0) {
            return true;
        }
        return false;
    }
    public static boolean jeIvicaDesno(int j,int sirina)
    {
        if (j==sirina-1) {
            return true;
        }
        return false;
    }
    
}