#include #define PAUSE system("pause") #define LLI long long int #define LD long double #define PB push_back #define PF push_front #define MP make_pair #define FORi(i, a, b) for(int i = a; i < b ; ++i) #define FORd(i, a, b) for(int i = a; i > b ; --i) using namespace std; int hex(char c){ if ('0'<= c && c <='9'){ return c-'0'; } if ('A'<= c && c <='F'){ return c -'A' + 10; } assert(1==0); } string optimal(string s){ int ss=hex(s[1]), best=100, best_i=0; char lower = s[0]; if (lower == 'A'){ lower = '9'; } else { lower = max(lower-1, (int)'0'); } char upper = s[0]; if (upper == '9'){ upper = 'A'; } else { upper = min(upper+1, (int)'F'); } vector v = {lower,s[0],upper}; for(auto i: v){ if (abs(16*hex(s[0]) + ss-17*hex(i)) < best){ best = abs(16*hex(s[0]) + ss - 17*hex(i)); best_i = i; } } assert(best < 100); s = ""; s += char(best_i); return s; } string solve(string s){ vector colors; FORi(i,0,3){ colors.PB(s.substr(1+2*i, 2)); } s = "#"; for(auto c: colors){ s += optimal(c); } return s; } int main() { int n,m; cin >> n >> m; string s; FORi(i,0,n){ FORi(j,0,m){ cin >> s; cout << solve(s) << ' '; } cout << endl; } return 0; }