package main

import (
	"fmt"

	h "git.bullercodeworks.com/brian/adventofcode/helpers"
)

func init() {
}

func main() {
	fmt.Println("# Day 25")
	inp := h.StdinToStringSlice()

	solve(inp, h.Atoi(h.OptArgNumber(1, "2")))
}

func solve(inp []string, part int) {
	card, door := 7, 7
	cardPub := h.Atoi(inp[0])
	doorPub := h.Atoi(inp[1])
	var cardLoops, doorLoops int
	cardVal, doorVal := 1, 1
	for cardVal != cardPub {
		cardVal = loop(cardVal, card)
		cardLoops++
	}
	for doorVal != doorPub {
		doorVal = loop(doorVal, door)
		doorLoops++
	}
	fmt.Println("Card Loop Size:", cardLoops)
	fmt.Println("Door Loop Size:", doorLoops)
	ans := 1
	for i := 0; i < cardLoops; i++ {
		ans = loop(ans, doorVal)
	}
	fmt.Println("Answer:", ans)
}

const div = 20201227

func loop(v, subject int) int {
	v = v * subject
	return v % div
}
