As we all know, most Pokemon are created by combining some English (or Japanese) words; these words are the Pokemon's "etymology." For example, "charmander" is "char" and "salamander" put together.

Your task is, given a Pokemon's etymology and number, output the original Pokemon name. A short answer will be able to compress the 890 Pokemon into much fewer characters by exploiting the fact that the etymologies and the names themselves use mostly the same characters.

**Input:** The Pokemon number, and an array/list of etymologies, all lowercase

**Output:** The Pokemon's name, also lowercase

The full list of test cases can be found here: https://pastebin.com/B3rRdiPn. Each line is a test case with the format:

    <pokemon number>;<comma separated etymology list>;<pokemon name>


This list was created from https://pokemondb.net/etymology by running the following code:

    let collectedRows = [];
    let rows = $(".data-table tr").slice(1)
    let isOddPrev = false;
    // Replacements due to typos, remove 'palindrome' since girafig doesn't come from the word 'palindrome', 'palindrome' is just a descriptor
    var repl = {"anacondo": "anaconda", "armadilo": "armadillo", "[palindrome]": ""}
    rows.each((_, row) => {
      let isOdd = row.classList.contains("odd");
      let etym = $(row).find(".cell-etym-word").text().toLowerCase();
      if (repl.hasOwnProperty(etym)) etym = repl[etym];
      if (isOdd !== isOddPrev) {
        collectedRows.push({name: $(row).find(".cell-name").text().toLowerCase(), etymology: [etym], num: parseInt($(row).find(".cell-num").text().replace(/\s/g, ''), 10)});
      } else {
        collectedRows[collectedRows.length - 1].etymology.push(etym);
      }
      
      isOddPrev = isOdd;
    });

    // Output:
    collectedRows.map(pokemon => pokemon.num + ";" + pokemon.etymology.join(",").replace(/\,$/, '') + ";" + pokemon.name).join("\n")

**Examples**:

The full list of test cases can be found at the pastebin link, but here are some example inputs and outputs:

    1, ['bulb', '-saur'] --> 'bulbasaur'
    122, ['mr.', 'mime artist'] --> 'mr. mime'
    29, ['nidoru' ,'rhino', '♀'] --> 'nidoran♀'
    16, ['pigeon'] --> 'pidgey'
    17, ['pigeon'] --> 'pidgeotto'
    23, ['snake'] --> 'ekans'

Note that due to 'nidoran♀' and its family, you need to be able to handle input/output in UTF-8.

The winner is the entry with the highest accuracy, with ties broken by code length. In practice, this means that the challenge is code-golf -- you need to get 100% accuracy to be a competitive entry -- since you can trivially create a lookup table, but feel free to post a sub-100% accuracy answer if you think it does something creative (someone else might extend it to handle the edge cases).

If you wish, you may also include a data file, and the number of bytes of that file is added to your byte count. This is just if you want to keep your code and data separate.