# Exercises — Fork choice and finality

1. Reimplement without looking at `solution/Main.java`.
2. Add a boundary test: empty input, invalid sequence, altered payload, or equal fork weight as appropriate.
3. Add an adversarial case and explain why it is rejected.
4. Explain what this toy model does **not** guarantee in a public blockchain.

**Acceptance:** compile with Java 21, execute with exit code 0, show one success and two failure-path assertions.
