Using two linked programs, output ordinal numbers up to n ...Ordinal numbers (or ordinal numerals) are words representing position or rank in a sequential order.




From Wikipedia.

Your task is, using 2 separate programs (of which can be made from 2 different languages), to output the ordinal sequence from first to nth. You will be outputting the full word second as opposed to 2nd.

The challenge of ordinal numbers has been brought up before, particularly in this entry. In this challenge, ordinals are merely a vehicle to facilitate the unique conditions detailed below. 



Part 1

You must make a program that, when given the input of n must output anything.
n will always be a positive, non-zero integer no larger than 999.

Valid output includes but is not limited to:


Any output to stdout / stderr / etc
Creation of files / folders / etc
A graphical interface or images of any kind


Anything goes.



Part 2

You must make a program that uses the output of part 1's program to output a sequence of ordinal numbers, starting from 1 (first), up to whatever n was parsed in part 1.

General Conditions:


The total bytes for part 2 must not exceed the total bytes for part 1 (less than or equal to). 


Output conditions:


Not case sensitive.
Output must contain only the ordinal sequence (only characters a-Z) and whitespace (newlines allowed).
Can be output to any source, so long as it is visible either during or after execution.
Program does not need to terminate so long as its output is correct.
Output is not required to have any grammar, but may optionally include it (hyphens, commas, "ands", etc). nine hundred ninety ninth is just as acceptable as nine hundred and ninety-ninth.


Sample Output

Where n is 8

FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH




Scoring

The hierarchy of win conditions is:


  
  The lowest number of bytes in part 1
  The lowest number of bytes in part 2
  


Entry #1 | Part 1 = 32 bytes, Part 2 = 22 bytes
Entry #2 | Part 1 = 31 bytes, part 2 = 30 bytes

Entry #2 wins - Part 1 contains 31 bytes vs 32 bytes

---

Entry #1 | Part 1 = 21 bytes, Part 2 = 33 bytes
Entry #2 | Part 1 = 80 bytes, Part 2 = 70 bytes

Entry #2 wins - Entry #1 disqualified (Part 2 contains more bytes than Part 1)

---

Entry #1 | Part 1 = 50 bytes, Part 2 = 49 bytes
Entry #2 | Part 1 = 50 bytes, Part 2 = 50 bytes

Entry #1 wins - Part 1 is equal, Part 2 contains 49 bytes vs 50 bytes
Sledgehammer 0.5.1 / Sledgehammer 0.5.1, 10 bytes

Program 1 (10 bytes):

⣘⢷⠾⣃⢖⣎⢅⡨⠱⢳


Decompresses into this Wolfram Language function: 

{Range[#1], "Ordinal"} &amp;


Program 2 (7 bytes):

⡾⡁⢚⣷⣬⠤⣾


Decompresses into this Wolfram Language function:

StringRiffle[IntegerName @@ #1, " "] &amp;


Try it online!