package main

import (
	"bufio"
	"fmt"
	"log"
	"os"
	"strconv"
)

func main() {
	inp := StdinToStringSlice()
	part1(inp)
	part2(inp)
}

func part1(inp []string) {
	freq := 0
	for _, v := range inp {
		freq += Atoi(v)
	}
	fmt.Println("Part 1:", freq)
}

func part2(inp []string) {
	fmt.Println("Part 2:", findRepeat(inp))
}

func findRepeat(inp []string) int {
	vals := make(map[int]bool)
	freq := 0
	for true {
		for _, v := range inp {
			freq += Atoi(v)
			if vals[freq] {
				return freq
			}
			vals[freq] = true
		}
	}
	return 0
}

func StdinToStringSlice() []string {
	var input []string
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		input = append(input, scanner.Text())
	}
	return input
}

func Atoi(i string) int {
	var ret int
	var err error
	if ret, err = strconv.Atoi(i); err != nil {
		log.Fatal("Invalid Atoi")
	}
	return ret
}
