#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;
}
