Floyd's triangle   lists the natural numbers in a right triangle aligned to the left where

 the first row is   1     (unity)
 successive rows start towards the left with the next number followed by successive naturals listing one more number than the line above.


The first few lines of a Floyd triangle looks like this:

 1
 2  3
 4  5  6
 7  8  9 10
11 12 13 14 15



Task

 Write a program to generate and display here the first   n   lines of a Floyd triangle. 
(Use   n=5   and   n=14   rows).
 Ensure that when displayed in a mono-space font, the numbers line up in vertical columns as shown and that only one space separates numbers of the last row.


PROC Triangle(BYTE level)
  INT v,i
  BYTE x,y
  BYTE ARRAY widths(20)
  CHAR ARRAY tmp(5)
 
  v=1
  FOR y=1 TO level-1
  DO
    v==+y
  OD
  FOR x=0 TO level-1
  DO
    StrI(v+x,tmp)
    widths(x)=tmp(0)
  OD
 
  v=1
  FOR y=1 TO level
  DO
    FOR x=0 TO y-1
    DO
      StrI(v,tmp)
      FOR i=tmp(0) TO widths(x)-1
      DO 
        Put(32)
      OD
      Print(tmp)
      IF x<y-1 THEN
        Put(32)
      ELSE
        PutE()
      FI
      v==+1
    OD
  OD
RETURN
 
PROC Main()
  BYTE LMARGIN=$52,oldLMARGIN
 
  oldLMARGIN=LMARGIN
  LMARGIN=0 ;remove left margin on the screen
 
  Put(125) PutE() ;clear the screen
  Triangle(5)
  PutE()
  Triangle(13)
 
  LMARGIN=oldLMARGIN ;restore left margin on the screen
RETURN