func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, b[101][101];   bool isHorrizontal() {     int i, j;     for (i = 0; i < n / 3; i++) {       for (j = 0; j < m; j++) {         if (b[i][j] != 1) return false;       }     }     for (i = n / 3; i < (n - n / 3) / 2 + (n / 3); i++) {       for (j = 0; j < m; j++) {         if (b[i][j] != 2) return false;       }     }     for (i = (n - n / 3) / 2 + (n / 3); i < n; i++) {       for (j = 0; j < m; j++) {         if (b[i][j] != 3) return false;       }     }     return true;   }   bool isVertical() {     int i, j;     for (i = 0; i < n; i++) {       for (j = 0; j < m / 3; j++) {         if (b[i][j] != 1) return false;       }     }     for (i = 0; i < n; i++) {       for (j = m / 3; j < (m - m / 3) / 2 + (m / 3); j++) {         if (b[i][j] != 2) return false;       }     }     for (i = 0; i < n; i++) {       for (j = (m - m / 3) / 2 + (m / 3); j < m; j++) {         if (b[i][j] != 3) return false;       }     }     return true;   }   int main() {     int i, j, c = 0, tmp = 0;     scanf( %d %d , &n, &m);     char a;     map<char, int> mp;     for (i = 0; i < n; i++) {       for (j = 0; j < m; j++) {         scanf(  %c , &a);         if (!mp.count(a)) {           tmp++;           mp[a] = tmp;         }         b[i][j] = mp[a];         if (b[i][j] == 3) c = 1;       }     }     if (c == 1) {       if (n % 3 == 0 || m % 3 == 0) {         if (n % 3 == 0 && isHorrizontal())           puts( YES );         else if (m % 3 == 0 && isVertical())           puts( YES );         else           puts( NO );       } else         puts( NO );     } else       puts( NO );     return 0;   }   