#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const long long INFLL = 1000000000000000000LL;
string str;
int rodzaj, aktrod;
int tryb;
int wyn;
bool przym(string s) {
  if (s.length() >= 4 && s.substr(s.length() - 4, 4) == "lios") {
    aktrod = 2;
    return true;
  }
  if (s.length() >= 5 && s.substr(s.length() - 5, 5) == "liala") {
    aktrod = 1;
    return true;
  }
  return false;
}
bool czas(string s) {
  if (s.length() >= 6 && s.substr(s.length() - 6, 6) == "initis") {
    aktrod = 2;
    return true;
  }
  if (s.length() >= 6 && s.substr(s.length() - 6, 6) == "inites") {
    aktrod = 1;
    return true;
  }
  return false;
}
bool rzecz(string s) {
  if (s.length() >= 3 && s.substr(s.length() - 3, 3) == "etr") {
    aktrod = 2;
    return true;
  }
  if (s.length() >= 4 && s.substr(s.length() - 4, 4) == "etra") {
    aktrod = 1;
    return true;
  }
  return false;
}
int main() {
  getline(cin, str);
  istringstream buf(str);
  istream_iterator<string> beg(buf), end;
  vector<string> tokens(beg, end);
  wyn = true;
  tryb = 0;
  rodzaj = 0;
  bool jrzecz = false;
  for (int i = 0; i < tokens.size(); i++) {
    if (przym(tokens[i])) {
      if (tryb != 0) {
        if (i > 0) {
          wyn = false;
          break;
        }
      }
    } else {
      if (rzecz(tokens[i])) {
        jrzecz = true;
        if (tryb != 0 && tryb != 1) {
          if (i > 0) {
            wyn = false;
            break;
          }
        } else {
          tryb = 2;
        }
      } else {
        if (czas(tokens[i])) {
          if (tryb != 2) {
            if (i > 0) {
              wyn = false;
              break;
            }
            tryb = 2;
          }
        } else {
          wyn = false;
          break;
        }
      }
    }
    if (rodzaj != 0 && aktrod != rodzaj) {
      wyn = false;
      break;
    } else {
      rodzaj = aktrod;
    }
  }
  if ((wyn && jrzecz) || (wyn && tokens.size() == 1))
    cout << "YES\n";
  else
    cout << "NO\n";
  return 0;
}
