#include <bits/stdc++.h>

const int maks = 1000;

using namespace std;

bool proveraDesno(int a[][maks], int h, int n, int p){
    for(int i = p;i < n;i++)
        if(a[h][i] != 0)
            return true;
    return false;
}

bool proveraLevo(int a[][maks], int h, int n, int p){
    for(int i = p;i >= 0;i--)
        if(a[h][i] != 0)
            return true;
    return false;
}

void ispisi(int a[][maks], int h, int n){
    for(int i = 0;i < n;i++)
        cout << a[h][i] << " ";
    cout << '\n';
}

void vodopad(int a[][maks], int h, int n){
    int zbir = 0, kolicnik, ostatak;
    bool pom[maks][maks] = {false};
    for(int i = 1;i <= h;i++){
        for(int j = 0;j < n;j++){
            if(a[i][j] != 0){
                if(a[i-1][j] != 0 && !pom[i][j]){
                    a[i][j] = a[i-1][j];
                    pom[i][j] = true;
                    //a[i-1][j] = 0;
                }
                else if(a[i-1][j] != 0 && pom[i][j])
                    a[i][j] += a[i-1][j];
            }
            else{
                if(j == 0){
                    for(int k = j;k < n;k++){
                        if(a[i][k] == 0){
                            zbir += a[i-1][k];
                            a[i-1][k] = 0;
                        }
                        else{
                            if(!pom[i][k]){
                                a[i][k] = zbir;
                                pom[i][k] = true;
                            }
                            else
                                a[i][k] += zbir;
                            zbir = 0;
                            break;
                        }
                    }
                }
                else if(j == n - 1){
                    for(int k = j;k >= 0;k--){
                        if(a[i][k] == 0){
                            zbir += a[i-1][k];
                            a[i-1][k] = 0;
                        }
                        else{
                            if(!pom[i][k]){
                                a[i][k] = zbir;
                                pom[i][k] = true;
                            }
                            else
                                a[i][k] += zbir;
                            zbir = 0;
                            break;
                        }
                    }
                }
                else{
                    kolicnik = a[i-1][j] / 2;
                    ostatak = a[i-1][j] % 2;
                    if(proveraDesno(a, i, n, j) && proveraLevo(a, i, n, j)){
                        for(int k = j;k < n;k++){
                            if(a[i][k] != 0){
                                if(i%2 != 0){
                                    if(!pom[i][k]){
                                        a[i][k] = kolicnik;
                                        pom[i][k] = true;
                                    }
                                    else
                                        a[i][k] += kolicnik;
                                }
                                else{
                                    if(!pom[i][k]){
                                        a[i][k] = kolicnik + ostatak;
                                        pom[i][k] = true;
                                    }
                                    else
                                        a[i][k] += kolicnik + ostatak;
                                }
                                break;
                            }
                        }
                        for(int k = j;k >= 0;k--){
                            if(a[i][k] != 0){
                                if(i%2 != 0){
                                    if(!pom[i][k]){
                                        a[i][k] = kolicnik + ostatak;
                                        pom[i][k] = true;
                                    }
                                    else
                                        a[i][k] += kolicnik + ostatak;
                                }
                                else{
                                    if(!pom[i][k]){
                                        a[i][k] = kolicnik;
                                        pom[i][k] = true;
                                    }
                                    else
                                        a[i][k] += kolicnik;
                                }
                                break;
                            }
                        }
                    }
                    else if(proveraLevo(a, i, n, j) && !proveraDesno(a, n, i, j)){
                        for(int k = j;k < n;k++){
                            zbir += a[i-1][k];
                            a[i-1][k] = 0;
                        }
                        for(int k = j;k >= 0;k--){
                            if(a[i][k] != 0){
                                if(!pom[i][k]){
                                    a[i][k] = zbir;
                                    pom[i][k] = true;
                                }
                                else
                                    a[i][k] += zbir;
                                break;
                            }
                        }
                    }
                    else if(!proveraLevo(a, i, n, j) && proveraDesno(a, i, n, j)){
                        for(int k = j;k >= 0;k--){
                            zbir += a[i-1][k];
                            a[i-1][k] = 0;
                        }
                        for(int k = j;k < n;k++){
                            if(a[i][k] != 0){
                                if(!pom[i][k]){
                                    a[i][k] = zbir;
                                    pom[i][k] = true;
                                }
                                else
                                    a[i][k] += zbir;
                                break;
                            }
                        }
                    }
            }
        }
    }
}
    ispisi(a, h, n);
}

int main(){
    ios::sync_with_stdio(false);
    int h, n;
    int a[maks][maks];
    cin >> h >> n;
    for(int i = 0;i < n;i++)
        a[0][i] = 1;
    for(int i = 1;i <= h;i++)
        for(int j = 0;j < n;j++)
            cin >> a[i][j];
    vodopad(a, h, n);
    return 0;
}