#include <bits/stdc++.h>
using namespace std;
void R__Extend_Euclid(long long a, long long b, long long &d, long long &x,
                      long long &y) {
  if (!b) {
    x = 1, y = 0, d = a;
  } else
    R__Extend_Euclid(b, a % b, d, y, x), y -= (a / b) * x;
}
template <class R>
string R__MonthName(R name) {
  string mon[15];
  mon[1] = "January";
  mon[2] = "February";
  mon[3] = "March";
  mon[4] = "April";
  mon[5] = "May";
  mon[6] = "June";
  mon[7] = "July";
  mon[8] = "August";
  mon[9] = "September";
  mon[10] = "October";
  mon[11] = "November";
  mon[12] = "December";
  return mon[name];
}
template <class R>
R R__MonthDay(R num) {
  R month[13];
  month[1] = 31;
  month[2] = 28;
  month[3] = 31;
  month[4] = 30;
  month[5] = 31;
  month[6] = 30;
  month[7] = 31;
  month[8] = 31;
  month[9] = 30;
  month[10] = 31;
  month[11] = 30;
  month[12] = 31;
  return month[num];
}
template <class R>
R R__GCD(R a, R b) {
  if (a == 0 && b == 0) return 0;
  if (a == 0) return 1;
  if (b == 0)
    return a;
  else
    return R__GCD(b, a % b);
}
template <class R>
R R__LCM(R a, R b) {
  return (a * b) / R__GCD(a, b);
}
template <class R>
R R__POW(R a, R b) {
  if (b == 0) return 1;
  R x = a;
  for (R i = 2; i <= b; i++) a = a * x;
  return a;
}
template <class R>
R R__Josephus(R n, R k) {
  R ans = 1;
  for (R i = 2; i <= n; i++) ans = (ans + k - 1) % i + 1;
  return ans;
}
template <class R>
R R__BigMod(R a, R b, R c) {
  if (a == 0) return 0;
  if (b == 0) return 1;
  if (b % 2 == 0) {
    R x = R__BigMod(a, b / 2, c) % c;
    return (x * x) % c;
  } else
    return ((a % c) * R__BigMod(a, b - 1, c) % c) % c;
}
template <class R>
R R__Factorial(R a) {
  R b = 1;
  for (R i = 1; i <= a; i++) b = b * i;
  return b;
}
template <class R>
R R__BinarySearch(R a[], R l, R h, R n) {
  while (l <= h) {
    R m = (l + h) / 2;
    if (n < a[m])
      h = m - 1;
    else if (n > a[m])
      l = m + 1;
    else
      return m;
  }
  return -1;
}
template <class R>
R R__InverseMod(R a, R b) {
  if (b == 1) return 1;
  R b0 = b, x0 = 0, x1 = 1;
  while (a > 1) {
    R temp = x0;
    x0 = x1 - (a / b) * x0;
    x1 = temp;
    temp = b;
    b = a % b;
    a = temp;
  }
  if (x1 < 0) x1 = x1 + b0;
  return x1;
}
template <class R>
R R__Euler_Toitent_Phi2(R a) {
  R result = a;
  for (R i = 2; i * i <= a; i++) {
    if (a % i == 0) result = result - result / i;
    while (a % i == 0) a = a / i;
  }
  if (a > 1) result = result - result / a;
  return result;
}
bool flag[100];
void setup() {
  bool t = true, f = false;
  flag['A'] = t;
  flag['B'] = f;
  flag['C'] = f;
  flag['D'] = f;
  flag['E'] = f;
  flag['F'] = f;
  flag['G'] = f;
  flag['H'] = t;
  flag['I'] = t;
  flag['J'] = f;
  flag['K'] = f;
  flag['L'] = f;
  flag['M'] = t;
  flag['N'] = f;
  flag['O'] = t;
  flag['P'] = f;
  flag['Q'] = f;
  flag['R'] = f;
  flag['S'] = f;
  flag['T'] = t;
  flag['U'] = t;
  flag['V'] = t;
  flag['W'] = t;
  flag['X'] = t;
  flag['Y'] = t;
  flag['Z'] = f;
}
bool test(string input) {
  for (int i = 0; i < input.size(); i++) {
    int inx = input[i];
    if (flag[inx] == false) return false;
  }
  return true;
}
int main() {
  setup();
  string input;
  cin >> input;
  string target = input;
  reverse(input.begin(), input.end());
  if (input == target && test(target))
    cout << "YES\n";
  else
    cout << "NO\n";
  return 0;
}
