import collections import itertools import sys def recurse(n, sources, cache={0: 1}): if n not in cache: cache[n] = sum(recurse(m, sources) for m in sources[n]) return cache[n] text = sys.stdin.read() ns = [int(n) for n in text.splitlines()] ns += [0, max(ns) + 3] ns.sort() a, b = collections.Counter([b - a for a, b in zip(ns, ns[1:])]).values() print(a * b) sources = collections.defaultdict(list) for a, b in itertools.combinations(ns, 2): if b - a <= 3: sources[b].append(a) print(recurse(ns[-1], sources))