Pascal's triangle is an arithmetic and geometric figure often associated with the name of Blaise Pascal, but also studied centuries earlier in India, Persia, China and elsewhere.

Its first few rows look like this: 

    1
   1 1
  1 2 1
 1 3 3 1 

where each element of each row is either 1 or the sum of the two elements right above it.

For example, the next row of the triangle would be:

   1   (since the first element of each row doesn't have two elements above it)
   4   (1 + 3)
   6   (3 + 3)
   4   (3 + 1)
   1   (since the last element of each row doesn't have two elements above it) 
So the triangle now looks like this: 

    1
   1 1
  1 2 1
 1 3 3 1
1 4 6 4 1 

Each row    n    (starting with row   0   at the top) shows the coefficients of the binomial expansion of    (x + y)n. 



Task

Write a function that prints out the first    n    rows of the triangle   (with    f(1)    yielding the row consisting of only the element 1).

This can be done either by summing elements from the previous rows or using a binary coefficient or combination function.

Behavior for    n ≤ 0    does not need to be uniform, but should be noted.



See also

 Evaluate binomial coefficients


*        Pascal's triangle         25/10/2015
PASCAL   CSECT
         USING  PASCAL,R15         set base register
         LA     R7,1               n=1
LOOPN    C      R7,=A(M)           do n=1 to m
         BH     ELOOPN             if n>m then goto 
         MVC    U,=F'1'            u(1)=1
         LA     R8,PG              pgi=@pg
         LA     R6,1               i=1
LOOPI    CR     R6,R7              do i=1 to n
         BH     ELOOPI             if i>n then goto 
         LR     R1,R6              i
         SLA    R1,2               i*4
         L      R3,T-4(R1)         t(i)
         L      R4,T(R1)           t(i+1)
         AR     R3,R4              t(i)+t(i+1)
         ST     R3,U(R1)           u(i+1)=t(i)+t(i+1)
         LR     R1,R6              i
         SLA    R1,2               i*4
         L      R2,U-4(R1)         u(i)
         XDECO  R2,XD              edit u(i)
         MVC    0(4,R8),XD+8       output u(i):4
         LA     R8,4(R8)           pgi=pgi+4
         LA     R6,1(R6)           i=i+1
         B      LOOPI              end i
ELOOPI   MVC    T((M+1)*(L'T)),U   t=u
         XPRNT  PG,80              print
         LA     R7,1(R7)           n=n+1
         B      LOOPN              end n
ELOOPN   XR     R15,R15            set return code
         BR     R14                return to caller
M        EQU    11                 <== input
T        DC     (M+1)F'0'          t(m+1) init 0
U        DC     (M+1)F'0'          u(m+1) init 0
PG       DC     CL80' '            pg     init ' '
XD       DS     CL12               temp
         YREGS
         END    PASCAL