using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int h = int.Parse(Console.ReadLine());
            int m = int.Parse(Console.ReadLine());
            int[,] vodopad = new int[h + 1, m];

            for (int j = 0; j < m; j++)
            {
                vodopad[0, j] = 1;
            }
            for (int i = 1; i <= h; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    vodopad[i, j] = int.Parse(Console.ReadLine());

                    if (vodopad[i, j] == 0)
                    {
                        vodopad[i, j] = -1;
                    }
                    else if (vodopad[i, j] == 1)
                    {
                        vodopad[i, j] = 0;
                    }


                }


            }


           
            
            
            
            
            for (int i = 0; i < h; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (vodopad[i, j] > 0) //ako j nije kamen
                    {
                        if (vodopad[i + 1, j] !=-1) //ako ispod nema kamena povecaj 
                        {
                            vodopad[i + 1, j] += vodopad[i, j];
                        }


                        else  //ako je dole kamen
                        {


                            if (vodopad[i, j] % 2 == 0) //ako je voda deljiva sa 2
                            {
                                int pad = vodopad[i, j] / 2; //koliko treba dati na stranu
                                int b = j, q = j;

                                while (true)
                                {
                                    if (b <= 0) //ako je kamen sa leve strane
                                    {
                                        if (vodopad[i + 1, b] != -1)
                                        { break; }
                                        while (true)
                                        {
                                            if (vodopad[i + 1, q ] != -1)
                                            {
                                                vodopad[i + 1, q ] += pad * 2;
                                                break;
                                            }
                                            q++;
                                        }
                                        break;
                                    }

                                    else if (q >= m - 1) //ako je kamen sa desne strane
                                    {
                                        if (vodopad[i + 1, q] != -1)
                                        { break; }
                                        while (true)
                                        {
                                            if (vodopad[i + 1, b] != -1)
                                            {
                                                vodopad[i + 1, b]+= pad * 2;
                                                break;
                                            }
                                            b--;
                                        }
                                        break;
                                    }

                                   

                                    else //ako padne u razlicito vreme na obe strane
                                    {
                                        if (vodopad[i + 1, q + 1] != -1) //ako prvo padne na desnu
                                        {
                                            vodopad[i + 1, q + 1] += pad;

                                            while (true)
                                            {
                                                if (vodopad[i + 1, b ] != -1)
                                                {
                                                    vodopad[i + 1, b ] += pad;
                                                    break;
                                                }
                                                if (b == 0)
                                                { vodopad[i + 1, q + 1] += pad;
                                                break;
                                                }
                                                b--;
                                            }
                                            break;
                                        }
                                        else if (vodopad[i + 1, b - 1] != -1)
                                        {
                                            vodopad[i + 1, b - 1] += pad;
                                            while (true)
                                            {
                                                if (vodopad[i + 1, q ] != -1)
                                                {
                                                    vodopad[i + 1, q ] = pad;
                                                    break;
                                                }
                                                if (pad == m - 1)
                                                { vodopad[i + 1, b - 1] += pad; break; }
                                                q++;
                                            }
                                            break;
                                        }

                                        b--;
                                        q++;

                                    }
                                }
                            }


                            else  //ako nije deljivo sa 2
                            {
                                int visakb = 0, visakq = 0;
                                if ((i+1) % 2 == 0)
                                {
                                    visakq++;
                                }
                                else { visakb++; }

                                int pad = vodopad[i, j] / 2; //koliko treba dati na stranu
                                int b = j, q = j;

                                while (true)
                                {
                                    if (b <= 0) //ako je kamen sa leve strane
                                    {
                                        while (true)
                                        {
                                            if (vodopad[i + 1, b] != -1)
                                            { break; }
                                            if (vodopad[i + 1, q ] != -1)
                                            {
                                                vodopad[i + 1, q ] += pad * 2 + visakq + visakb;
                                                break;
                                            }
                                            q++;
                                        }
                                        break;
                                    }

                                    else if (q >= m - 1) //ako je kamen sa desne strane
                                    {
                                        while (true)
                                        {
                                            if (vodopad[i + 1, q] != -1)
                                            { break; }
                                            
                                            if (vodopad[i + 1, b ] != -1)
                                            {
                                                vodopad[i + 1, b ] += pad * 2 + visakb + visakq;
                                                break;
                                            }
                                            b--;
                                        }
                                        break;
                                    }

                                    

                                    else //ako padne u razlicito vreme na obe strane
                                    {
                                        if (vodopad[i + 1, q + 1] != -1) //ako prvo padne na desnu
                                        {
                                            vodopad[i + 1, q + 1] += pad + visakq;
                                            
                                            while (true)
                                            {
                                                
                                                if (vodopad[i + 1, b] != -1)
                                                {
                                                    vodopad[i + 1, b] += pad + visakb;
                                                    break;
                                                }
                                                if (b == 0)
                                                { 
                                                vodopad[i + 1, q + 1] += visakb+pad;
                                                break;
                                                }
                                                b--;
                                            }
                                            break;
                                        }
                                        else if (vodopad[i + 1, b-1] != -1)
                                        {
                                            vodopad[i + 1, b-1] += pad + visakb;
                                            while (true)
                                            {
                                                if (vodopad[i + 1, q ] != -1)
                                                {
                                                    vodopad[i + 1, q ] += pad + visakq;
                                                    break;
                                                }
                                                if (q == m-1)
                                                {
                                                    vodopad[i + 1, b - 1] += visakq+pad;
                                                    break;
                                                }
                                                q++;
                                            }
                                            break;
                                        }

                                        b--;
                                        q++;



                                    }
                                }
                            }
                        }

                    }


                        
                        
                    else
                    {
                    }


      
                    

                }
            }


                for (int i = 0; i < m; i++)
                {
                    if (vodopad[h, i] == -1)
                    {
                        vodopad[h, i] = 0;
                    }

                    Console.Write("{0,2}", vodopad[h, i]);
                }


                
            }



        }
}