#include <cstdio>

using namespace std;

struct cell{
    int value = 0;
    bool levo = true, desno = true;
};

cell niz[2000005];
int input[2000005];

int main()
{
    int h, n;
    scanf("%d %d", &h, &n);
    for(int i = 1; i<=h; i++)
    {
        for(int j = 0; j<n; j++)
        {
            scanf("%d", input + i*n + j);
        }
    }

    for(int i = 0; i<n; i++) niz[i].value = 1;

    for(int i = 0; i<h; i++)
    {
        for(int j = 0; j<n; j++)
        {
            if(input[(i+1)*n + j]==0)
            {
                int l = j;
                int k = 0;
                for(j; input[(i+1)*n + j]==0 && j<n; j++)
                    k+=niz[i*n + j].value;
                j--;

                if(l==0)
                {
                    niz[(i+1)*n + j+1].value += k;
                }
                else if(j==n-1)
                {
                    niz[(i+1)*n + l-1].value += k;
                }
                else
                {
                    niz[(i+1)*n + j+1].value += k/2;
                    niz[(i+1)*n + l-1].value += k/2;
                    if(k%2==1)
                    {
                        if((i+1)%2==1)
                            niz[(i+1)*n + k-1].value += 1;
                        else
                            niz[(i+1)*n + j+1].value += 1;
                    }
                }
            }
            else
                niz[(i+1)*n + j].value+=niz[i*n + j].value;
        }

//        printf("\n");
//        for(int i = 0; i<=h; i++)
//        {
//            for(int j = 0; j<n; j++)
//            {
//                printf("%d ", niz[i*n + j].value);
//            }
//            printf("\n");
//        }

    }

    for(int i = 0; i<n; i++)
    {
        printf("%d ", niz[h*n + i].value);
    }
    return 0;
}