#include <bits/stdc++.h>

using namespace std;
int h,n,niz[1000010],prefix[1000010],niz2[1000010],prefix2[1000010];
int main (){
    scanf("%d %d",&h,&n);
    for(int i = 1; i <= n; i++){
        scanf("%d",&niz[i]);
        prefix[i]=0;
    }
    bool imadesno=true,imalevo=true;
    int prvilevo,prvidesno,levi,desni;
    for(int i = 1; i <= n; i++){
        imadesno=true;
        imalevo=true;
        if(niz[i]==0){
            prefix[i]=0;
            prvilevo=i;
            prvidesno=i;
            while(1){
                prvilevo--;
                if(niz[prvilevo]==1){
                    levi=prvilevo;
                    break;
                }
                if(prvilevo==0){
                    imalevo=false;
                }
            }
            while(1){
                prvidesno++;
                if(niz[prvidesno]==1){
                    desni=prvidesno;
                    break;
                }
                if(prvidesno==n+1){
                    imadesno=false;
                    break;
                }
            }
            if(imadesno==true && imalevo==true){
                prefix[levi]++;
            }
            if(imadesno==true and imalevo==false){
                prefix[desni]++;
            }
            if(imadesno==false and imalevo==true){
                prefix[levi]++;
            }
        }
        if(niz[i]==1){
            prefix[i]++;
        }
    }
//    for(int i = 1; i <= n; i++){
//        cout << prefix[i] << " ";
//    }
//    cout << endl;
    if(h==1){
        for(int i = 1; i <= n; i++){
        cout << prefix[i] << " ";
        }
        return 0;
    }

    for(int g = 2; g <= h;g++){
        for(int i = 1; i <= n; i++){
            scanf("%d",&niz[i]);
            if(niz[i]==1 and prefix[i]>0){
                prefix2[i]=prefix[i];
            }
        }
        imadesno=false;
        imalevo=false;
        for(int i = 1; i <= n; i++){
//            cout << "-->";
//            for(int k = 1; k <= n; k++){
//                cout << prefix2[k] << " ";
//            }
//        cout << endl;
            if(niz[i]==0){
                prefix2[i]=0;
                prvilevo=i;
                prvidesno=i;
                while(1){
                    if(niz[prvidesno]==1){
                        desni=prvidesno;
                        imadesno=true;
                        break;
                    }
                    prvidesno++;
                    if(prvidesno>n){
                        imadesno=false;
                        break;
                    }
                }
                while(1){
                    if(niz[prvilevo]==1){
                        levi=prvilevo;
                        imalevo=true;
                        break;
                    }
                    prvilevo--;
                    if(prvilevo<0){
                        imalevo=false;
                        break;
                    }
                }
                if(imalevo==true and imadesno==true){
                    prefix2[levi]+=prefix[i]/2;
                    prefix2[desni]+=prefix[i]/2;
                    if(prefix[i]%2==1){
                        if(g%2==1){
                            prefix2[levi]++;
                        }else{
                            prefix2[desni]++;
                        }
                    }
                    continue;
                }
                if(imalevo==true and imadesno==false){
                    prefix2[levi]+=prefix[i];
                }
               if(imalevo==false and imadesno==true){
                    prefix2[desni]+=prefix[i];
               }
            }
        }
        for(int i =1; i <= n; i++){
            prefix[i]=prefix2[i];
        }
    }
    for(int i =1; i <= n; i++){
        cout << prefix2[i] << " ";
    }
return 0;
}