#include <bits/stdc++.h>
using namespace std;
int dcmp(double a, double b) {
  return ((fabs(a - b) < (1e-9)) ? 0 : (a < b) ? -1 : +1);
}
double fixAngle(double a) { return ((a > 1) ? 1 : (a < -1) ? -1 : a); }
bool same(const complex<double> &p1, const complex<double> &p2) {
  return ((dcmp(p1.real(), p2.real()) == 0 && dcmp(p1.imag(), p2.imag()) == 0)
              ? 1
              : 0);
}
double getAngle_A_abc(double a, double b, double c) {
  return acos(fixAngle((b * b + c * c - a * a) / (2 * b * c)));
}
vector<string> v;
string str;
istringstream ss;
void input() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  v.reserve(100000);
  getline(cin, str);
  ss = istringstream(str);
  while (ss >> str) v.emplace_back(str);
}
int isnoun(const string &g) {
  if (((int)((g).size())) < 3) return 0;
  string g2 = g.substr(((int)((g).size())) - 3);
  if (g2 == "etr") return 1;
  if (((int)((g).size())) < 4) return 0;
  g2 = g.substr(((int)((g).size())) - 4);
  if (g2 == "etra") return 2;
  return 0;
}
int isverb(const string &g) {
  if (((int)((g).size())) < 6) return 0;
  string g2 = g.substr(((int)((g).size())) - 6);
  if (g2 == "initis") return 1;
  if (g2 == "inites") return 2;
  return 0;
}
int isadj(const string &g) {
  if (((int)((g).size())) < 4) return 0;
  string g2 = g.substr(((int)((g).size())) - 4);
  if (g2 == "lios") return 1;
  if (((int)((g).size())) < 5) return 0;
  g2 = g.substr(((int)((g).size())) - 5);
  if (g2 == "liala") return 2;
  return 0;
}
int main() {
  input();
  if (((int)((v).size())) == 1) {
    if (isnoun(v[0]) || isverb(v[0]) || isadj(v[0]))
      puts("YES");
    else
      puts("NO");
    return 0;
  }
  int ia = -1, in = -1, iv = -1;
  for (__typeof(((int)((v).size()))) i = 0; i < ((int)((v).size())); ++i) {
    if (isadj(v[i]))
      ia = i;
    else if (isnoun(v[i])) {
      if (iv == -1) {
        in = i;
        break;
      } else {
        puts("NO");
        return 0;
      }
    } else {
      puts("NO");
      return 0;
    }
  }
  for (__typeof(((int)((v).size()))) i = in + 1; i < ((int)((v).size())); ++i)
    if (!isverb(v[i])) return puts("NO"), 0;
  int Z = isnoun(v[in]);
  for (__typeof(in) i = 0; i < in; ++i)
    if (Z != isadj(v[i])) return puts("NO"), 0;
  for (__typeof(((int)((v).size()))) i = in + 1; i < ((int)((v).size())); ++i)
    if (Z != isverb(v[i])) return puts("NO"), 0;
  puts("YES");
  return 0;
}
