#include <bits/stdc++.h>
using namespace std;
pair<int, int> getword() {
  string s;
  if (!(cin >> s)) return make_pair(-1, -1);
  reverse(s.begin(), s.end());
  if (string(s.begin(), s.begin() + min(4, (int)s.size())) == "soil")
    return make_pair(0, 0);
  if (string(s.begin(), s.begin() + min(5, (int)s.size())) == "alail")
    return make_pair(0, 1);
  if (string(s.begin(), s.begin() + min(3, (int)s.size())) == "rte")
    return make_pair(1, 0);
  if (string(s.begin(), s.begin() + min(4, (int)s.size())) == "arte")
    return make_pair(1, 1);
  if (string(s.begin(), s.begin() + min(6, (int)s.size())) == "sitini")
    return make_pair(2, 0);
  if (string(s.begin(), s.begin() + min(6, (int)s.size())) == "setini")
    return make_pair(2, 1);
  cout << "NO" << endl;
  exit(0);
}
int main() {
  vector<pair<int, int> > res;
  do {
    res.push_back(getword());
  } while (res.back() != make_pair(-1, -1));
  res.pop_back();
  if (res.size() == 1) {
    cout << "YES" << endl;
    return 0;
  }
  for (int i = 0; i < res.size(); i++)
    if (res[0].second != res[i].second) {
      cout << "NO" << endl;
      return 0;
    }
  for (; res.size() && res.back().first == 2;) res.pop_back();
  reverse(res.begin(), res.end());
  for (; res.size() && res.back().first == 0;) res.pop_back();
  if (res.size() == 1) {
    cout << "YES" << endl;
    return 0;
  }
  cout << "NO" << endl;
  return 0;
}
