#!/usr/bin/env python import sys from typing import Dict, List def make_chain(adapters: List[int]) -> int: adapters += [0, max(adapters) + 3] adapters = sorted(adapters) jolts: Dict[int, int] = {} N = len(adapters) def rec(index: int) -> int: if (res := jolts.get(index)) is not None: return res if index == N - 1: return 1 total = sum( rec(i) for i in range(index + 1, min(N, index + 4)) if (adapters[i] - adapters[index]) <= 3 ) jolts[index] = total return total return rec(0) def solve(raw: List[str]) -> int: return make_chain([int(line) for line in raw]) def main() -> None: input = [line.strip() for line in sys.stdin.readlines()] print(solve(input)) if __name__ == "__main__": main()