#include <iostream>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int main()
{
    int h;
    int n;
    cin >> h >> n;
    int mat[h][n];

    int prethodni[n];
    int sledeci[n];
    int temp[n];
    for (int j = 0; j < n; j++)
    {
        prethodni[j] = 1;
        temp[j] = 0;
    }
    for (int i = 0; i < h; i++)
    {
        for (int j = 0; j < n; j++)
        {
            cin >> mat[i][j];
        }
    }

    for (int i=0; i<h; i++)
    {
        std::copy(temp,temp+n, sledeci);
        for(int j = 0; j<n;j++)
        {
            int prethodniBroj = prethodni[j];

            if (mat[i][j] == 0)
            {
                //pomeranje
                if ((j == 0 || mat[i][ j - 1] == 0) && j != n - 1)// ne moze levo, pomera desno (prvi, levo je 0 ili stigao do kraja)
                {
                    //desno za 1 mesto
                    sledeci[j + 1] += prethodniBroj;                    
                }
                else if(j==n-1)// || mat[i,j+1] == 0)//ne moze desno stigao do kraja, pomera levo
                {
                    //levo dok ne naidje na 1
                    int k = j - 1;
                    while(mat[i][k] == 0)
                    {
                        k--;
                    }
                    sledeci[k] += prethodniBroj;
                }
                else
                {
                    //desno i levo
                    int levo = prethodniBroj / 2;
                    int desno = prethodniBroj / 2;
                    if (mat[i][j - 1] == 0)
                    {
                        desno = prethodniBroj;//sve ide desno
                    }
                    else
                    {
                        if ((i+1) % 2 == 1)
                        {
                            levo += prethodniBroj % 2;
                        }
                        else
                        {
                            desno += prethodniBroj % 2;
                        }
                    }
                    //sledeci[j - 1] += levo;
                    if (mat[i][j - 1] == 1)
                    {
                        sledeci[j - 1] += levo;
                    }
                    prethodni[j + 1] += desno;
                }

            }
            else
            {
                sledeci[j] += prethodniBroj;
            }
        }
        std::copy(sledeci,sledeci+n, prethodni);        
    }
    for (int j = 0; j < n; j++)
    {
        cout << prethodni[j]<< " ";
    }
    return 0;
}