from pprint import pprint
# Ищем в графе циклы длины 3
def find_triangles():
cycles = []
for i in range(vert_count):
for j in range(i + 1, vert_count):
for k in range(j + 1, vert_count):
if (j in graph[i] and
k in graph[j] and
i in graph[k]):
if not colinear(i, j, k): # Проверяем что треугольник не вырожден
cycles.append((i, j, k))
return cycles
def colinear(i, j, k):
res = False
for l in lines:
if i in l and j in l and k in l:
res = True
return res
# Для каждой вершины список лежащих с ней на одной прямой вершин
graph = [
[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15],
[0, 2, 4, 7, 8, 9, 10, 11, 14],
[0, 1, 3, 4, 6, 9, 12, 15],
[0, 2, 4, 5, 8, 9, 10, 13, 16],
[0, 1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16],
[0, 3, 4, 6, 10, 13, 14, 15, 16],
[0, 2, 4, 5, 7, 9, 12, 15],
[0, 1, 4, 6, 8, 11, 14, 15, 16],
[0, 1, 3, 7, 9, 11, 14],
[0, 1, 2, 3, 4, 6, 8, 10, 12, 15],
[1, 3, 4, 5, 9, 13, 16],
[0, 1, 4, 7, 8, 12, 13, 14],
[0, 2, 4, 6, 9, 11, 13, 15],
[0, 3, 4, 5, 10, 11, 12, 16],
[0, 1, 5, 7, 8, 11, 15],
[0, 2, 4, 5, 6, 7, 9, 12, 14, 16],
[3, 4, 5, 7, 10, 13, 15]
]
# Списки лежащих на одной прямой вершин
lines = [
[0, 1, 2],
[2, 3, 4],
[4, 5, 6],
[6, 7, 0],
[1, 8, 11, 14, 7],
[1, 9, 10, 4],
[7, 15, 16, 4],
[0, 8, 9, 3],
[0, 14, 15, 5],
[3, 10, 13, 16, 5],
[0, 11, 12, 13, 4],
[2, 9, 12, 15, 6]
]
vert_count = 17
cycles = find_triangles()
print(f"Triangles: {len(cycles)}")
pprint(cycles)
# ↑ (2)
# ↑↑↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# (1) ↑↑↑ ↑ ↑↑ (3)
# ↑ ↑ ↑ ↑ ↑↑
# ↑ ↑ ↑ ↑↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑↑ ↑ ↑
# ↑ ↑ (9) ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑↑ ↑
# ↑ ↑ ↑↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑↑ ↑ ↑
# (8) ↑↑ ↑ ↑↑ (10) ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑↑ ↑
# ↑ ↑↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑
# ↑↑ ↑(11) ↑ (12) ↑ (13) ↑↑
#(0) ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ (4)
# ↑ ↑↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ (14) ↑ ↑ (16) ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑↑ (15) ↑ ↑
# ↑ ↑ ↑↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑
# ↑ ↑↑ ↑ ↑ ↑ ↑
# ↑ ↑ ↑ ↑ ↑ ↑↑
# (7) ↑↑↑ ↑ ↑↑ (5)
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑ ↑ ↑
# ↑↑
# ↑ (6)
ZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludAoKCiMg0JjRidC10Lwg0LIg0LPRgNCw0YTQtSDRhtC40LrQu9GLINC00LvQuNC90YsgMwpkZWYgZmluZF90cmlhbmdsZXMoKToKICAgIGN5Y2xlcyA9IFtdCiAgICBmb3IgaSBpbiByYW5nZSh2ZXJ0X2NvdW50KToKICAgICAgICBmb3IgaiBpbiByYW5nZShpICsgMSwgdmVydF9jb3VudCk6CiAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGogKyAxLCB2ZXJ0X2NvdW50KToKICAgICAgICAgICAgICAgIGlmIChqIGluIGdyYXBoW2ldIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBrIGluIGdyYXBoW2pdIGFuZAogICAgICAgICAgICAgICAgICAgICAgICBpIGluIGdyYXBoW2tdKToKICAgICAgICAgICAgICAgICAgICBpZiBub3QgY29saW5lYXIoaSwgaiwgayk6ICAjINCf0YDQvtCy0LXRgNGP0LXQvCDRh9GC0L4g0YLRgNC10YPQs9C+0LvRjNC90LjQuiDQvdC1INCy0YvRgNC+0LbQtNC10L0KICAgICAgICAgICAgICAgICAgICAgICAgY3ljbGVzLmFwcGVuZCgoaSwgaiwgaykpCiAgICByZXR1cm4gY3ljbGVzCgoKZGVmIGNvbGluZWFyKGksIGosIGspOgogICAgcmVzID0gRmFsc2UKICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgIGlmIGkgaW4gbCBhbmQgaiBpbiBsIGFuZCBrIGluIGw6CiAgICAgICAgICAgIHJlcyA9IFRydWUKICAgIHJldHVybiByZXMKCgojINCU0LvRjyDQutCw0LbQtNC+0Lkg0LLQtdGA0YjQuNC90Ysg0YHQv9C40YHQvtC6INC70LXQttCw0YnQuNGFINGBINC90LXQuSDQvdCwINC+0LTQvdC+0Lkg0L/RgNGP0LzQvtC5INCy0LXRgNGI0LjQvQpncmFwaCA9IFsKICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMSwgMTIsIDEzLCAxNCwgMTVdLAogICAgWzAsIDIsIDQsIDcsIDgsIDksIDEwLCAxMSwgMTRdLAogICAgWzAsIDEsIDMsIDQsIDYsIDksIDEyLCAxNV0sCiAgICBbMCwgMiwgNCwgNSwgOCwgOSwgMTAsIDEzLCAxNl0sCiAgICBbMCwgMSwgMiwgMywgNSwgNiwgNywgOSwgMTAsIDExLCAxMiwgMTMsIDE1LCAxNl0sCiAgICBbMCwgMywgNCwgNiwgMTAsIDEzLCAxNCwgMTUsIDE2XSwKICAgIFswLCAyLCA0LCA1LCA3LCA5LCAxMiwgMTVdLAogICAgWzAsIDEsIDQsIDYsIDgsIDExLCAxNCwgMTUsIDE2XSwKICAgIFswLCAxLCAzLCA3LCA5LCAxMSwgMTRdLAogICAgWzAsIDEsIDIsIDMsIDQsIDYsIDgsIDEwLCAxMiwgMTVdLAogICAgWzEsIDMsIDQsIDUsIDksIDEzLCAxNl0sCiAgICBbMCwgMSwgNCwgNywgOCwgMTIsIDEzLCAxNF0sCiAgICBbMCwgMiwgNCwgNiwgOSwgMTEsIDEzLCAxNV0sCiAgICBbMCwgMywgNCwgNSwgMTAsIDExLCAxMiwgMTZdLAogICAgWzAsIDEsIDUsIDcsIDgsIDExLCAxNV0sCiAgICBbMCwgMiwgNCwgNSwgNiwgNywgOSwgMTIsIDE0LCAxNl0sCiAgICBbMywgNCwgNSwgNywgMTAsIDEzLCAxNV0KXQoKIyDQodC/0LjRgdC60Lgg0LvQtdC20LDRidC40YUg0L3QsCDQvtC00L3QvtC5INC/0YDRj9C80L7QuSDQstC10YDRiNC40L0KbGluZXMgPSBbCiAgICBbMCwgMSwgMl0sCiAgICBbMiwgMywgNF0sCiAgICBbNCwgNSwgNl0sCiAgICBbNiwgNywgMF0sCiAgICBbMSwgOCwgMTEsIDE0LCA3XSwKICAgIFsxLCA5LCAxMCwgNF0sCiAgICBbNywgMTUsIDE2LCA0XSwKICAgIFswLCA4LCA5LCAzXSwKICAgIFswLCAxNCwgMTUsIDVdLAogICAgWzMsIDEwLCAxMywgMTYsIDVdLAogICAgWzAsIDExLCAxMiwgMTMsIDRdLAogICAgWzIsIDksIDEyLCAxNSwgNl0KXQoKdmVydF9jb3VudCA9IDE3CgpjeWNsZXMgPSBmaW5kX3RyaWFuZ2xlcygpCnByaW50KGYiVHJpYW5nbGVzOiB7bGVuKGN5Y2xlcyl9IikKcHByaW50KGN5Y2xlcykKCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAoMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpHihpHihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSDihpEg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICDihpEgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICDihpEgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICDihpEgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgIOKGkSAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgIOKGkSAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgIOKGkSAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgIOKGkSAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAoMSkgIOKGkeKGkeKGkSAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgIOKGkeKGkSAgICgzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICDihpEgIOKGkSAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICDihpEgICDihpHihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgIOKGkSAgICAgICAgICAgICDihpEgICAgICAgICAgICDihpHihpEgICAgIOKGkSDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgIOKGkSAg4oaRICAgICAgICDihpEgICAgICAgICAg4oaRICAgICAgICAgIOKGkSAgICAgICAg4oaRICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICDihpEgICDihpEgICAgICAgICAgIOKGkSAgICAgICDihpEgICAgICAg4oaRICAgICAgICAgICDihpEgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAg4oaRICAgIOKGkSAgICAgICAgICAgICDihpEgICAgIOKGkSAgICDihpEgICAgICAgICAgICAgIOKGkSAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgIOKGkSAgICAg4oaRICAgICAgICAgICAgICAgIOKGkSAg4oaRIOKGkeKGkSAgICAgICAgICAgICAgICDihpEgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgIOKGkSAgICAgIOKGkSAgICAgICAgICAgICAgKDkpICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgIOKGkSAgICAgICDihpEgICAgICAgICAgICAgICAg4oaRICDihpEgIOKGkSAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAg4oaRICAgICAgICDihpEgICAgICAgICAgICAg4oaRICAgICDihpEgICAg4oaR4oaRICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgIOKGkSAgICAgICAgIOKGkSAgICAgICAgICDihpHihpEgICAgICAg4oaRICAgICAgIOKGkSAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICDihpEgICAgICAgICAg4oaRICAgICAgICDihpEgICAgICAgICAg4oaRICAgICAgICAgIOKGkSAgICAgICAg4oaRICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAg4oaRICAgICAgICAgICDihpEgICAgIOKGkSAgICAgICAgICAgICDihpEgICAgICAgICAgICAg4oaRICAgICDihpEgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICDihpEgIOKGkSAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICDihpHihpEgIOKGkSAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgKDgpIOKGkeKGkSAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgIOKGkeKGkSAoMTApICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICDihpEgICAgICAgICAgIOKGkSDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSDihpEgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAg4oaRICAgICAgICAg4oaRICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgIOKGkSAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgIOKGkSAgICAgICDihpEgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICDihpHihpEgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgIOKGkSAgICAg4oaR4oaRICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICDihpEgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgIOKGkSAgICDihpEgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgIOKGkSAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICDihpEgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgIOKGkeKGkSAgICAgICAgICAgICAgICAgIOKGkSgxMSkgICAgICAgICAgICAgICDihpEgKDEyKSAgICAgICAgICAgICAg4oaRICgxMykgICAgICAgICAgICDihpHihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMoMCkg4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaR4oaRICAoNCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgIOKGkSDihpHihpEgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAg4oaRICAg4oaRICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAg4oaR4oaRICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICDihpEgICAgIOKGkSAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgIOKGkeKGkSAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgIOKGkSAgICAgICDihpEgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAg4oaRICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgIOKGkeKGkSAgICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAgICDihpEgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAg4oaRICDihpEgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSDihpEgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgIOKGkSAgICAgICAgICAgICDihpEgICAoMTQpICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgIOKGkSAoMTYpICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAg4oaRICAgICAgICAgICAg4oaRICDihpEgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgIOKGkSAg4oaRICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAg4oaRICAgICAgICAgICDihpEgICAg4oaR4oaRICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICDihpEgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAg4oaRICAgICAgICAgIOKGkSAgICAgICDihpEgICAgICAgICAgIOKGkSAgICAgICAgICDihpEgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgIOKGkSAgICAgICAgIOKGkSAgICAgICAgICDihpEgICAgICAgIOKGkSAgICAgICDihpHihpEgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgIOKGkSAgICAgICAg4oaRICAgICAgICAgICAgIOKGkSAgICAg4oaRICAgICDihpEgICAgICAgICAgICAg4oaRICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgIOKGkSAgICAgICDihpEgICAgICAgICAgICAgICDihpHihpEgIOKGkSAg4oaRICAgICAgICAgICAgICAgIOKGkSAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAg4oaRICAgICAg4oaRICAgICAgICAgICAgICAgICAg4oaR4oaRICAoMTUpICAgICAgICAgICAgIOKGkSAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgIOKGkSAgICAg4oaRICAgICAgICAgICAgICAgIOKGkeKGkSDihpEg4oaRICAgICAgICAgICAgICAgICDihpEgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAg4oaRICAgIOKGkSAgICAgICAgICAgICAg4oaRICAgIOKGkSAgICDihpEgICAgICAgICAgICAgIOKGkSAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAg4oaRICAgICAgIOKGkSAgICAgIOKGkeKGkSAgICAgICAgICAg4oaRICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICDihpEgICAgICAgICAg4oaRICAgICAgICAg4oaRICAgICAgICAg4oaRICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICDihpHihpEgICAgICAgICAgICDihpEgICAgICAgICAgICDihpEgICAgICDihpEg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAg4oaRIOKGkSAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgIOKGkeKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICg3KSAg4oaR4oaR4oaRICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAg4oaR4oaRICAgICg1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICAgIOKGkSAgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAgICAg4oaRICAgICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICAgICAg4oaRICAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgICAg4oaRICAgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAgICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAgICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICAg4oaRICAgICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEgICAg4oaRICAgIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaRICAg4oaRICAg4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAg4oaRICDihpEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpEg4oaRIOKGkSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4oaR4oaRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKGkSAgICg2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCg==
Triangles: 70
[(0, 1, 4),
(0, 1, 7),
(0, 1, 8),
(0, 1, 9),
(0, 1, 11),
(0, 1, 14),
(0, 2, 3),
(0, 2, 4),
(0, 2, 6),
(0, 2, 9),
(0, 2, 12),
(0, 2, 15),
(0, 3, 4),
(0, 3, 5),
(0, 3, 13),
(0, 4, 5),
(0, 4, 6),
(0, 4, 7),
(0, 4, 9),
(0, 4, 15),
(0, 5, 6),
(0, 5, 13),
(0, 6, 9),
(0, 6, 12),
(0, 6, 15),
(0, 7, 8),
(0, 7, 11),
(0, 7, 14),
(0, 7, 15),
(0, 8, 11),
(0, 8, 14),
(0, 9, 12),
(0, 9, 15),
(0, 11, 14),
(0, 12, 15),
(1, 2, 4),
(1, 2, 9),
(1, 4, 7),
(1, 4, 11),
(1, 8, 9),
(2, 3, 9),
(2, 4, 6),
(2, 4, 9),
(2, 4, 12),
(2, 4, 15),
(3, 4, 5),
(3, 4, 9),
(3, 4, 10),
(3, 4, 13),
(3, 4, 16),
(3, 9, 10),
(4, 5, 10),
(4, 5, 13),
(4, 5, 15),
(4, 5, 16),
(4, 6, 7),
(4, 6, 9),
(4, 6, 12),
(4, 6, 15),
(4, 7, 11),
(4, 9, 12),
(4, 9, 15),
(4, 10, 13),
(4, 10, 16),
(4, 12, 15),
(4, 13, 16),
(5, 6, 15),
(5, 15, 16),
(6, 7, 15),
(7, 14, 15)]