// mc2b.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <map>
#include <cmath>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;

map<char, int> hexa;
int n, m, i, j;
char diez, r1, r2, g1, g2, b1, b2;

vector<string> to_print;

int main()
{
    hexa['0'] = 0;
    hexa['1'] = 1;
    hexa['2'] = 2;
    hexa['3'] = 3;
    hexa['4'] = 4;
    hexa['5'] = 5;
    hexa['6'] = 6;
    hexa['7'] = 7;
    hexa['8'] = 8;
    hexa['9'] = 9;
    hexa['A'] = 10;
    hexa['B'] = 11;
    hexa['C'] = 12;
    hexa['D'] = 13;
    hexa['E'] = 14;
    hexa['F'] = 15;

    cin >> n >> m;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
        {
            cin >> diez;
            cin >> r1 >> r2;
            cin >> g1 >> g2;
            cin >> b1 >> b2;

            int init;
            int p1, p2;
            char cr, cg, cb;
            init = hexa[r1] * 16 + hexa[r2];
            p1 = hexa[r1] * 16 + hexa[r1];
            p2 = hexa[r2] * 16 + hexa[r2];
            if (abs(init - p1) < abs(init - p2))
            {
                cr = r1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cr = r2;
            }
            else
            {
                cr = min(r1, r2);
            }
            char oldr1 = r1;
            if (r1 != 'F')
            {
                if (r1 == '9')
                {
                    r1 = 'A';
                }
                else r1++;
            }
            else
                goto _exitr1;
            p1 = hexa[r1] * 16 + hexa[r1];
            p2 = hexa[cr] * 16 + hexa[cr];
            if (abs(init - p1) < abs(init - p2))
            {
                cr = r1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cr = cr; 
            }
            else
            {
                cr = min(r1, cr);
            }
            _exitr1:
            r1 = oldr1;
            if (r1 != '0')
            {
                if (r1 == 'A')
                {
                    r1 = '9';
                }
                else r1--;
            }
            else
            {
                goto _exitr2;
            }
            p1 = hexa[r1] * 16 + hexa[r1];
            p2 = hexa[cr] * 16 + hexa[cr];
            if (abs(init - p1) < abs(init - p2))
            {
                cr = r1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cr = cr;
            }
            else
            {
                cr = min(r1, cr);
            }
            _exitr2:
            init = hexa[g1] * 16 + hexa[g2];
            p1 = hexa[g1] * 16 + hexa[g1];
            p2 = hexa[g2] * 16 + hexa[g2];
            if (abs(init - p1) < abs(init - p2))
            {
                cg = g1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cg = g2;
            }
            else
            {
                cg = min(g1, g2);
            }
            char oldg1 = g1;
            if (g1 != 'F')
            {
                if (g1 == '9')
                {
                    g1 = 'A';
                }
                else g1++;
            }
            else goto _exitg1;
            p1 = hexa[g1] * 16 + hexa[g1];
            p2 = hexa[cg] * 16 + hexa[cg];
            if (abs(init - p1) < abs(init - p2))
            {
                cg = g1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cg = cg;
            }
            else
            {
                cg = min(r1, cg);
            }
            _exitg1:
            g1 = oldg1;
            if (g1 != '0')
            {
                if (g1 == 'A')
                {
                    g1 = '9';
                }
                else g1--;
            }
            else goto _exitg2;
            p1 = hexa[g1] * 16 + hexa[g1];
            p2 = hexa[cg] * 16 + hexa[cg];
            if (abs(init - p1) < abs(init - p2))
            {
                cg = g1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cg = cg;
            }
            else
            {
                cg = min(r1, cg);
            }
            _exitg2:
            init = hexa[b1] * 16 + hexa[b2];
            p1 = hexa[b1] * 16 + hexa[b1];
            p2 = hexa[b2] * 16 + hexa[b2];
            if (abs(init - p1) < abs(init - p2))
            {
                cb = b1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cb = b2;
            }
            else
            {
                cb = min(b1, b2);
            }
            char oldb1 = b1;
            if (b1 != 'F')
            {
                if (b1 == '9')
                {
                    b1 = 'A';
                }
                else b1++;
            }
            else goto _exitb1;
            p1 = hexa[b1] * 16 + hexa[b1];
            p2 = hexa[cb] * 16 + hexa[cb];
            if (abs(init - p1) < abs(init - p2))
            {
                cb = b1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cb = cb;
            }
            else
            {
                cb = min(b1, cb);
            }
            _exitb1:
            b1 = oldb1;
            if (b1 != '0')
            {
                if (b1 == 'A')
                {
                    b1 = '9';
                }
                else b1--;
            }
            else goto _exitb2;
            p1 = hexa[b1] * 16 + hexa[b1];
            p2 = hexa[cb] * 16 + hexa[cb];
            if (abs(init - p1) < abs(init - p2))
            {
                cb = b1;
            }
            else if (abs(init - p1) > abs(init - p2))
            {
                cb = cb;
            }
            else
            {
                cb = min(b1, cb);
            }
            _exitb2:

            string res = "#";
            res += cr;
            res += cg;
            res += cb;
            to_print.push_back(res);
            //cout << "#" << cr << cg << cb << " ";

        }
        //cout << "\n";
    }
    int k = 0;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++)
        {
            cout << to_print[k] << " ";
            k++;
        }
        cout << "\n";
    }
}