#!/usr/bin/env python3 from functools import reduce import re, sys import sys import numpy as np def tpl(l): # get nice tuple from line return int(l) def p(*args): print(*args) def threes(l): return sum(x == 3 for x in l) def onez(l): return sum(x == 1 for x in l) fn = sys.argv[1] if len(sys.argv) > 1 else 'input10' with open(fn) as f: lines = [l.strip() for l in f.readlines()] n = [0, ] + sorted([tpl(l) for l in lines]) n += [n[-1] + 3] d = [b - a for a, b in zip(n, n[1:])] p(onez(d) * threes(d)) ways = 1 ones = 0 for r in d: if r == 3: ways *= (1, 1, 2, 4, 7)[ones] ones = 0 elif r == 1: ones += 1 else: p('not 1 not 3') p(ways)