You are solving the crossword problem K from IPSC 2014. You solved all the clues except for one: who does Eevee evolve into? You are not very into pokemons, but quick googling helped you find out, that Eevee can evolve into eight different pokemons: Vaporeon, Jolteon, Flareon, Espeon, Umbreon, Leafeon, Glaceon, and Sylveon.

You know the length of the word in the crossword, and you already know some letters. Designers of the crossword made sure that the answer is unambiguous, so you can assume that exactly one pokemon out of the 8 that Eevee evolves into fits the length and the letters given. Your task is to find it.

Input

First line contains an integer n (6 ≤ n ≤ 8) – the length of the string.

Next line contains a string consisting of n characters, each of which is either a lower case english letter (indicating a known letter) or a dot character (indicating an empty cell in the crossword).

Output

Print a name of the pokemon that Eevee can evolve into that matches the pattern in the input. Use lower case letters only to print the name (in particular, do not capitalize the first letter).

Examples

Input

7
j......


Output

jolteon


Input

7
...feon


Output

leafeon


Input

7
.l.r.o.


Output

flareon

Note

Here's a set of names in a form you can paste into your solution:

["vaporeon", "jolteon", "flareon", "espeon", "umbreon", "leafeon", "glaceon", "sylveon"]

{"vaporeon", "jolteon", "flareon", "espeon", "umbreon", "leafeon", "glaceon", "sylveon"}
#include <bits/stdc++.h>
using namespace std;
string tostring(int a) {
  ostringstream temp;
  temp << a;
  return temp.str();
}
long long gcd(long long a, long long b) {
  if (a == 0) {
    return b;
  } else {
    return gcd(b % a, a);
  }
}
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
bool isPrime(int num) {
  if (num <= 1)
    return false;
  else if (num == 2)
    return true;
  else if (num % 2 == 0)
    return false;
  else {
    bool prime = true;
    int divisor = 3;
    double num_d = static_cast<double>(num);
    int upperLimit = static_cast<int>(sqrt(num_d) + 1);
    while (divisor <= upperLimit) {
      if (num % divisor == 0) prime = false;
      divisor += 2;
    }
    return prime;
  }
}
template <class T>
void reverse(T *a, int n) {
  T *skizb = a, *verj = a + n - 1;
  while (skizb < verj) {
    swap(*skizb, *verj);
    skizb++;
    verj--;
  }
}
long long fact(long long in) {
  if (in == 0 || in == 1) {
    return 1;
  }
  long long res = 1, mult = 2;
  while (mult < in + 1) {
    res *= mult;
    mult++;
  }
  return res;
}
struct str {
  int x, y, z;
  bool operator<(const str rhs) const {
    if (x < rhs.x) {
      return true;
    } else if (x == rhs.x) {
      if (y < rhs.y) {
        return true;
      } else if (y == rhs.y) {
        return z < rhs.z;
      }
    }
    return false;
  }
} sv[8];
long long exp(long long n, long long r, long long md) {
  if (r == 0) {
    return 1;
  }
  long long ans = exp(n, r / 2, md);
  ans *= ans;
  ans %= md;
  if (r & 1) {
    ans *= n;
    ans %= md;
  }
  return ans % md;
}
long long choose(long long n, long long r, long long md) {
  long long ans = 1;
  for (int i = n - r + 1; i < n + 1; i++) {
    ans *= i;
    ans %= md;
  }
  for (int i = 1; i < r + 1; i++) {
    ans *= exp(i, md - 2, md);
    ans %= md;
  }
  return ans % md;
}
int main() {
  int n;
  string in;
  cin >> n >> in;
  if (n == 6) {
    cout << "espeon" << endl;
  } else if (n == 8) {
    cout << "vaporeon" << endl;
  } else {
    if (in[0] != '.') {
      char t = in[0];
      if (t == 'j') {
        cout << "jolteon" << endl;
      } else if (t == 'f') {
        cout << "flareon" << endl;
      } else if (t == 'u') {
        cout << "umbreon" << endl;
      } else if (t == 'l') {
        cout << "leafeon" << endl;
      } else if (t == 'g') {
        cout << "glaceon" << endl;
      } else {
        cout << "sylveon" << endl;
      }
    } else if (in[1] != '.') {
      char t = in[1];
      if (t == 'o') {
        cout << "jolteon" << endl;
      } else if (t == 'm') {
        cout << "umbreon" << endl;
      } else if (t == 'e') {
        cout << "leafeon" << endl;
      } else if (t == 'y') {
        cout << "sylveon" << endl;
      } else {
        if (in[3] == 'r') {
          cout << "flareon" << endl;
        } else {
          cout << "glaceon" << endl;
        }
      }
    } else if (in[2] != '.') {
      char t = in[2];
      if (t == 'b') {
        cout << "umbreon" << endl;
      } else if (t == 'l') {
        if (in[3] == 't') {
          cout << "jolteon" << endl;
        } else {
          cout << "sylveon" << endl;
        }
      } else {
        if (in[3] == 'r') {
          cout << "flareon" << endl;
        } else if (in[3] == 'f') {
          cout << "leafeon" << endl;
        } else {
          cout << "glaceon" << endl;
        }
      }
    } else {
      char t = in[3];
      if (t == 't') {
        cout << "jolteon" << endl;
      } else if (t == 'f') {
        cout << "leafeon" << endl;
      } else if (t == 'c') {
        cout << "glaceon" << endl;
      } else {
        cout << "sylveon" << endl;
      }
    }
  }
  return 0;
}
