#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi, sys

# Список параметров, переданных в скрипт в строке запроса
params = cgi.FieldStorage()

# В параметре запроса rows указывается количество строк треугольника,
# которые необходимо вывести
if "rows" in params:
    rows = int(params["rows"].value)
else:
    rows = -1

print "Content-type: text/html"
print
print """<!DOCTYPE HTML>
        <html>
        <head>
            <meta charset="utf-8">
            <title>Треугольник Паскаля</title>
        </head>
        <body>"""

if rows < 0:
    print "<div style='color: red;'>Не задан параметр запроса rows.</div>"
    print """</body>
         </html>"""
    sys.exit(1)

print "<table>"

# Рассчет и вывод заданного количества строк треугольника паскаля.
# k-й элемент n-й строки равен биномиальному коэффициенту C^n_k.
for n in range(0, rows):

    print "<tr>"

    # Вывести номер строки
    print "<td>{}:</td>".format(n)

    # Вывести пустые ячейки таблицы для выравнивания
    for i in range(1, (rows - n) / 2):
        print "<td></td>"

    # Первый элемент всегда равен 1
    Cnk = 1
    print "<td>{}</td>".format(Cnk)

    # Рассчет следующих элементов
    for k in range(1, n + 1):
        Cnk = Cnk * (n - k + 1) / k
        print "<td>{}</td>".format(Cnk)
        
    print "</tr>"
    
print "</table>"
print """</body>
         </html>"""