#include using namespace std ; pair sol [600] ; char convert [] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'} ; map inv ; int main() { // freopen ("input", "r", stdin) ; // freopen ("output", "w", stdout) ; int e = 0 ; for (char c = '0' ; c <= '9' ; ++ c) { inv [c] = e ; e += 1 ; } inv ['A'] = 10 ; inv ['B'] = 11 ; inv ['C'] = 12 ; inv ['D'] = 13 ; inv ['E'] = 14 ; inv ['F'] = 15 ; for (int i = 0 ; i < 500; ++ i) { sol [i] = make_pair (200000, 200000) ; } for (int i = 0; i <= 15; ++ i) { for (int j = 0; j <= 15; ++ j) { for (int k = 0; k <= 15 ; ++ k) { if (abs (i * 16 + j - k * 16 - k) < sol [i*16 + j].first) { sol [i * 16 + j] = make_pair (abs (i * 16 + j - k * 16 - k), k) ; } else if (abs (i * 16 + j - k * 16 - k) == sol [i*16 + j].first) { sol [i * 16 + j].second = min (sol [i * 16 + j].second, k) ; } } } } int n, m ; cin >> n >> m ; for (int i = 1 ; i <= n ; ++ i) { for (int j = 1; j <= m ; ++ j) { string cur ; cin >> cur ; int a = inv [cur[1]] * 16 + inv [cur[2]] ; int b = inv [cur[3]] * 16 + inv [cur[4]] ; int c = inv [cur[5]] * 16 + inv [cur[6]] ; cout << "#" << convert [sol[a].second] << convert [sol[b].second] << convert [sol[c].second] ; if (j == m) { cout << '\n' ; } else { cout << ' ' ; } } } return 0 ; }