#include <bits/stdc++.h>
using namespace std;
void merge(long long arr[], long long l, long long m, long long r) {
  long long i, j, k;
  long long n1 = m - l + 1;
  long long n2 = r - m;
  long long L[n1], R[n2];
  for (i = 0; i < n1; i++) L[i] = arr[l + i];
  for (j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
  i = 0;
  j = 0;
  k = l;
  while (i < n1 && j < n2) {
    if (L[i] <= R[j]) {
      arr[k] = L[i];
      i++;
    } else {
      arr[k] = R[j];
      j++;
    }
    k++;
  }
  while (i < n1) {
    arr[k] = L[i];
    i++;
    k++;
  }
  while (j < n2) {
    arr[k] = R[j];
    j++;
    k++;
  }
}
void mergeSort(long long arr[], long long l, long long r) {
  if (l < r) {
    long long m = l + (r - l) / 2;
    mergeSort(arr, l, m);
    mergeSort(arr, m + 1, r);
    merge(arr, l, m, r);
  }
}
int digi(int y) {
  int r = y, sum = 0;
  while (r > 0) {
    sum += r % 10;
    r /= 10;
  }
  return sum;
}
long long power(long long a, unsigned long long n, long long p) {
  long long res = 1;
  a = a % p;
  while (n > 0) {
    if (n & 1) res = (res * a) % p;
    n = n >> 1;
    a = (a * a) % p;
  }
  return res;
}
long long gcd(long long a, long long b) {
  if (a < b)
    return gcd(b, a);
  else if (a % b == 0)
    return b;
  else
    return gcd(b, a % b);
}
long long isPrime(long long n) {
  if (n <= 1) return 0;
  if (n <= 3) return 1;
  if (n % 2 == 0 || n % 3 == 0) return 0;
  for (int i = 5; i * i <= n; i = i + 6) {
    if (n % i == 0 || n % (i + 2) == 0) {
      return 0;
    }
  }
  return 1;
}
int as(char sym[], char y) {
  int r = 0;
  for (int g = 0; g < 11; g++) {
    if (sym[g] == y) {
      r = 1;
      break;
    }
  }
  if (r == 1) {
    return 1;
  }
  return 0;
}
int main(int argc, const char* argv[]) {
  char sym[11] = {'A', 'H', 'I', 'M', 'O', 'T', 'U', 'V', 'W', 'X', 'Y'};
  string str;
  cin >> str;
  int y = 0, v = 0, p = 1;
  for (long g = 0; g < str.length(); g++) {
    if (as(sym, str.at(g)) == 0) {
      p = 0;
      break;
    }
  }
  if (p == 1) {
    if (str.length() % 2 == 0) {
      for (long h = 0; h < (str.length()) / 2; h++) {
        if (str.at(h) != str.at(str.length() - h - 1)) {
          y = 1;
          break;
        }
      }
      if (y == 1) {
        cout << "NO";
      } else {
        cout << "YES";
      }
    } else {
      if (str.length() == 1) {
        v = as(sym, str.at(0));
        if (v == 1) {
          cout << "YES";
        } else {
          cout << "NO";
        }
      } else {
        y = 0;
        v = as(sym, str.at((str.length() + 1) / 2));
        for (long h = 0; h < (str.length()) / 2; h++) {
          if (str.at(h) != str.at(str.length() - h - 1)) {
            y = 1;
            break;
          }
        }
        if (y == 0 && v == 1) {
          cout << "YES";
        } else {
          cout << "NO";
        }
      }
    }
  } else {
    cout << "NO";
  }
  return 0;
}
