func_code_string: #include <bits/stdc++.h>   using namespace std;   template <typename T>   T mabs(const T &a) {     return a < 0 ? -a : a;   }   const int mod = 1e9 + 7;   const int Row = 14, Mask = 4782969;   int D[2][2][Mask];   int setbit[Mask][3];   int getbit[Mask][3];   int p3[20] = {1};   inline int setBit(int mask, int pos, int val) {     return (mask / p3[pos + 1] * 3 + val) * p3[pos] + mask % p3[pos];   }   inline int getBit(int mask, int pos) { return mask / p3[pos] % 3; }   inline int up(int i, int mask) {     if (i == 0) return 3;     return getbit[mask][i - 1];   }   inline int left(int i, int j, int mask) {     if (j == 0) return 3;     return getbit[mask][i];   }   inline void addTo(int &a, int val) {     a += val;     if (a >= mod) a -= mod;   }   inline int &next(int flag, int flag2, int i, int n, int mask) {     if (i == n - 1) return D[flag ^ 1][0][mask];     return D[flag][flag2 ^ 1][mask];   }   void run() {     char str[] = { AHIMOTUVWXY };     char A[100100];     scanf( %s , A);     bool ok = 1;     int n = strlen(A);     for (int i = (0), ei = (n / 2); i < ei; i++)       if (A[i] != A[n - 1 - i]) ok = 0;     for (int i = (0), ei = (n); i < ei; i++)       if (strchr(str, A[i]) == 0) ok = 0;     puts(ok ?  YES  :  NO );   }   int main() {     run();     return 0;   }   