#include <iostream>
#include <vector>
#define ll long long
using namespace std;

int main()
{
    ll h, n;
    cin>>h>>n;
    ll vodopad[h][n], protok[h][n] = {0};
    for(ll i=0; i<h; ++i)
    {
        for(ll j=0; j<n; ++j)
        {
            cin>>vodopad[i][j];
            protok[i][j]=0;
        }
    }

    for(ll i=0; i<n; ++i)
        protok[0][i]=1;

    for(ll i=0; i<h; ++i)
    {
        for(ll j=0; j<n;)
        {
            //Trenutno nije ispod stene
            if(i>0)
            {
                if(vodopad[i-1][j]==1)
                    protok[i][j]+=protok[i-1][j];
            }
            ll brojac=1, temp, trenProt=protok[i][j];
            bool vise=false;
            //Trenutno stena
            if(vodopad[i][j]==0)
            {
                protok[i][j]=0;
                //Trenutno VISE stena, prebroj ih.
                if(vodopad[i][j+1]==0)
                {
                    vise=true;
                    //Prebrojava stene u trenutnoj vezanoj gomili.
                    for(int k=j+1; k<n; ++k)
                    {
                        if(vodopad[i][k]==0)
                            brojac++;
                        else if(vodopad[i][k]==1)
                            break;

                    }
                    for(int k=j-1; k>-1; --k)
                    {
                        if(vodopad[i][k]==0)
                            brojac++;
                        else if(vodopad[i][k]==1)
                            break;
                        brojac++;
                    }
                }
                //Leva ivica
                if(j==0)
                {
                    //Jedna stena
                    if(!vise)
                    {
                        protok[i][j+1]+=trenProt;
                    }
                    //Vise stena
                    else if(vise)
                    {
                        if(i>0)
                        {
                            temp=trenProt;
                            for(ll k=j; k<brojac; ++k)
                            {
                                temp+=protok[i-1][k];
                            }
                            protok[i][brojac-1]+=temp;
                        }
                    }

                }
                //Desna ivica
                else if(j==n-1)
                {
                    //Jedna stena
                    if(!vise)
                    {
                        protok[i][j-1]+=trenProt;
                    }
                    //Vise stena
                    else if(vise)
                    {
                        if(i>0)
                        {
                            temp=trenProt;
                            for(ll k=j; k>j-brojac; --k)
                            {
                                temp+=protok[i-1][k];
                            }
                            protok[i][n-1-brojac]+=temp;
                        }
                    }

                }
                //Nije ivica
                else
                {
                    //Jedna stena
                    if(!vise)
                    {
                        //Protok neparan
                        if(trenProt%2==1)
                        {
                            trenProt--;
                            if((i+1)%2==1)
                                protok[i][j-1]++;
                            else
                                protok[i][j+1]++;
                        }
                        //svakako polovine dodaj na levu i desnu stranu
                        trenProt/=2;
                        protok[i][j-1]+=trenProt;
                        protok[i][j+1]+=trenProt;
                    }
                    //Vise stena
                    else if(vise)
                    {
                        temp=trenProt;
                        for(ll k=j; k<brojac; ++k)
                        {
                            temp+=protok[i-1][k];
                        }
                        //Protok (temp) neparan
                        ll leva=j-1, desna=j+brojac;
                        if(temp%2==1)
                        {
                            temp--;
                            if((i+1)%2==1)
                                protok[i][leva]++;
                            else
                                protok[i][desna]++;
                        }
                        //svakako polovine dodaj na levu i desnu stranu
                        temp/=2;
                        protok[i][leva]+=temp;
                        protok[i][desna]+=temp;
                    }
                }

            }
            j+=brojac;
        }
    }
    for(ll i=0; i<n; ++i)
    {
        cout<<protok[h-1][i]<<" ";
    }
    cout<<"\n";
    return 0;
}